In einem Python-Modul A mache ich ein paar Sachen. Während ich das Zeug mache, erstelle ich eine Thrift-Verbindung. Das Problem ist, dass nach dem Start der Verbindung das Programm in der Netzwerklogik stecken bleibt. (d. h. Blockierung).Nicht-blockierender Server Apache Thrift Python
In Modul A Ich habe:
stuff = "do some stuff"
network.ConnectionManager(host, port, ...)
stuff = "do more stuff" # not getting to this point
im Netz ...
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()
Ich versuche, dies aber noch der Code in das Modul A wird nicht fortgesetzt, sobald der Verbindungscode beginnt.
Ich dachte TNonblockingServer würde den Trick tun, aber leider nicht.