Python 扭曲反应堆过早停堆
我正在执行批处理脚本以连接到tcp服务器,然后退出。 我的问题是我不能停止反应堆,例如:Python 扭曲反应堆过早停堆,python,networking,twisted,Python,Networking,Twisted,我正在执行批处理脚本以连接到tcp服务器,然后退出。 我的问题是我不能停止反应堆,例如: cmd = raw_input("Command: ") # custom factory, the protocol just send a line reactor.connectTCP(HOST,PORT, CommandClientFactory(cmd) d = defer.Deferred() d.addCallback(lambda x: reactor.stop()) reac
cmd = raw_input("Command: ")
# custom factory, the protocol just send a line
reactor.connectTCP(HOST,PORT, CommandClientFactory(cmd)
d = defer.Deferred()
d.addCallback(lambda x: reactor.stop())
reactor.callWhenRunning(d.callback,None)
reactor.run()
在此代码中,在tcp连接完成并传递cmd之前,反应器停止
在所有操作完成后,如何停止反应器?简单的解决方案是在检测到退出条件时,在代码中的某个点调用
reactor.stop()
。具体地说,我假设它将您的命令发送到远程机器并接收回命令的退出代码之后,您可能希望在CommandClient中的某个地方调用它
如前所述,反应器将启动并立即执行d.callback
,然后调用reactor.stop()
。程序逻辑与调用reactor.stop()
之间没有任何联系。将调用移到程序的核心逻辑中,您应该被设置。具体地说,我将把CommandClient协议的connectionMade()
和dataReceived()
方法作为检测“im-done”状态的可能候选方法