如何获得连接的公开函数列表

2024-05-13 14:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有少数rpyc服务器,它们只有部分具有相同的公开功能。在

在客户机上,事件应该转发到所有已连接并对特定事件感兴趣的服务器。在

我想从servers connection对象获取服务器上可用的公开函数的列表。在

到目前为止,我发现的最好的事情是使用方法名在客户机中检查现有的公开函数,例如

try:
    conn.root.exposed_recordLog
except Exception as e:
    print(f"recordLog is not exposed: {str(e)}")

这在客户机中引发了AttributeError异常-然而,这也在远程服务器上引发了一个我希望避免的异常。在

考虑在每台服务器上添加一个通用的“exposed\u supportedFunctions”函数,并返回其公开函数的列表,但这看起来有点过火,而且容易出现不匹配。在


Tags: 对象方法函数功能服务器列表客户机事件
2条回答

通过获取对象的属性,可以做到这一点。在python3.7上测试过。在

c = rpyc.connect_by_service('myservice')
exposed_methods = [ x[8:] for x in dir(c.root) if x.startswith('exposed_') and callable(getattr(c.root, x)) ]

我所做的就是添加这个服务

def exposed_get_methods(self):
    service_index = dir(self)
    exposed_methods = [x.replace('exposed_', '') for x in service_index if x.startswith('exposed_')]
    return exposed_methods

相关问题 更多 >