0

サーバー部分 - モジュールの登録とそれらの間の相互作用を担当するコア。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 (最新の呼び出しが最後):
ファイル "/home/kpv/perseus/control-lib/perseus_control_lib/module.py"、67 行目、__getattr__ 内
        return self.__core_connector.root.execute_query_module(self.__proxy_module_name, name, args)
ファイル "/usr/local/lib/python2.7/dist-packages/rpyc/core/netref.py"、196 行目、__call__ 内
        return syncreq(_self, consts.HANDLE_CALL, args, kwargs)
syncreq のファイル「/usr/local/lib/python2.7/dist-packages/rpyc/core/netref.py」の 71 行目
        return 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行目、サーブ
        data = self._recv(タイムアウト、wait_for_lock = True)
ファイル「/usr/local/lib/python2.7/dist-packages/rpyc/core/protocol.py」、344行目、_recv
        self._channel.poll(タイムアウト) の場合:
ファイル「/usr/local/lib/python2.7/dist-packages/rpyc/core/channel.py」、43行目、ポーリング
        return self.stream.poll(タイムアウト)
ファイル「/usr/local/lib/python2.7/dist-packages/rpyc/core/stream.py」、41行目、投票
        rl, _, _ = select([自分], [], [], タイムアウト)
    キーボード割り込み
4

0 に答える 0