1つのPythonモジュールAではいくつかのことをやっています。そのようなことをしている途中で、私は倹約のつながりを作り出しています。問題は、接続が開始された後で、プログラムがネットワークロジックにスタックされてしまうことです。 (すなわち、ブロックする)。私が持っているモジュールAではノンブロッキングサーバーApache Thrift Python
:ネットワークで
stuff = "do some stuff"
network.ConnectionManager(host, port, ...)
stuff = "do more stuff" # not getting to this point
...
ConnectionManager.start_service_handler()
def start_service_handler(self):
handler = ServiceHandler(self)
processor = Service.Processor(handler)
transport = TSocket.TServerSocket(port=self.port)
tfactory = TTransport.TBufferedTransportFactory()
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
# server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)
server = TNonblockingServer(processor, transport, tfactory, pfactory)
logger().info('starting server...')
server.serve()
私はこれを試して、まだモジュールAのコードは、すぐに接続コードが起動する続行されません。
私はTNonblockingServerがこのトリックを行うと思っていましたが、残念ながらそうはしませんでした。