python - rpyc - 如何获取连接的公开函数列表
问题描述
我有少量 rpyc 服务器,它们只有部分具有相同的公开功能。
在客户端事件应该被转发到所有已经连接并且对特定事件感兴趣的服务器。
我想从服务器连接对象获取服务器上可用的公开函数列表。
到目前为止,我发现的最好的事情是使用方法名称在客户端检查现有的公开函数,例如
try:
conn.root.exposed_recordLog
except Exception as e:
print(f"recordLog is not exposed: {str(e)}")
这会在客户端引发 AttributeError 异常 - 但是 - 这也会在远程服务器上引发我想避免的异常。
考虑在每个服务器上添加一个通用的“exposed_supportedFunctions”函数并返回其公开函数的列表,但这看起来有点矫枉过正并且容易出现不匹配。
解决方案
您可以通过获取连接对象的属性来做到这一点。在 Python 3.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)) ]
推荐阅读
- python - 在不使用 Python 中的内置函数的情况下反转列表的顺序
- c# - 如何优化在 IIS 8 上部署 C# SQL Server 网站?
- sql - R:如何替换数据库中表的单个列
- python - 在 python 中清理调查数据 - 如何在两个文件中查找和清理公共行?
- java - 如何使用自定义 ConstraintValidator 将 ConstraintViolations 添加到索引 i 处的列表元素
- c - 从 C 中的 stdio 扫描字符串和整数
- kotlin - Kotlin,改造 2:lang.IllegalArgumentException:参数类型不得包含类型变量或通配符:java.util.Map
- git - Visual Studio:由拉取请求创建和删除的存储
- excel - 访问位于 sftp 中的 excel 信息
- jquery - 如何从客户端 jQuery 上传 25 GB 以上的大文件?