核
服务器部分——Core,负责模块的注册和模块之间的交互。核心作为 ThreadedServer 运行。CoreService 提供注册模块。注册时,我保留了一个连接列表,然后使用它们。模块调用核心函数,它应该调用另一个模块。但是使用连接列表不起作用,性能进入无限循环。
class CoreService(rpyc.Service):
__modules = {}
def exposed_register_module(self, module_name):
if module_name in self.__modules:
return False
self.__modules[module_name] = self._conn
return True
def exposed_execute_query_module(self, module_name, attribute_name, args):
# TTTTTTTTTTHHHHHHHHHIIIIIIIISSSSSSSSSSSSSS
if module_name in self.__modules:
self.__modules[module_name].root
# return None
运行测试
当您运行测试时,我进入一个循环,该循环被组合键打断并获得以下输出:
^CTraceback(最近一次通话最后): __getattr__ 中的文件“/home/kpv/perseus/control-lib/perseus_control_lib/module.py”,第 67 行 返回 self.__core_connector.root.execute_query_module(self.__proxy_module_name, name, args) __call__ 中的文件“/usr/local/lib/python2.7/dist-packages/rpyc/core/netref.py”,第 196 行 返回同步请求(_self,consts.HANDLE_CALL,args,kwargs) 文件“/usr/local/lib/python2.7/dist-packages/rpyc/core/netref.py”,第 71 行,在 syncreq 返回 conn.sync_request(handler, oid, *args) 文件“/usr/local/lib/python2.7/dist-packages/rpyc/core/protocol.py”,第 438 行,在 sync_request 自助服务(0.1) 文件“/usr/local/lib/python2.7/dist-packages/rpyc/core/protocol.py”,第 387 行,在服务中 数据 = self._recv(超时,wait_for_lock = True) _recv 中的文件“/usr/local/lib/python2.7/dist-packages/rpyc/core/protocol.py”,第 344 行 如果 self._channel.poll(超时): 投票中的文件“/usr/local/lib/python2.7/dist-packages/rpyc/core/channel.py”,第 43 行 返回 self.stream.poll(超时) 投票中的文件“/usr/local/lib/python2.7/dist-packages/rpyc/core/stream.py”,第 41 行 rl,_,_ = 选择([self],[],[],超时) 键盘中断