我正在执行批处理脚本以连接到 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/