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

10-12 14:28