我正在执行批处理脚本以连接到 TCP 服务器然后退出。 我的问题是我无法停止 react 器,例如:
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()
在此代码中, react 堆在完成 tcp 连接并传递 cmd 之前停止。
如何在所有操作完成后停止 react 器?
最佳答案
简单的解决方案是在代码中检测到退出条件时调用 reactor.stop()
。具体来说,您可能希望在 CommandClient 中的某处调用它,我假设它会将您的命令发送到远程计算机并接收回命令的退出代码。
如所写, react 器将启动并立即执行 d.callback
,这将依次调用 reactor.stop()
。您的程序逻辑与对 reactor.stop()
的调用之间没有任何联系。将调用移至程序的核心逻辑中,您应该已设置好。具体来说,我会将您的 CommandClient 协议(protocol)的 connectionMade()
和 dataReceived()
方法视为检测“我已完成”条件的可能候选者。
关于python - 扭曲的 react 堆过早停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804381/