pyg*_*iel 3 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())
reactor.callWhenRunning(d.callback,None)
reactor.run()
Run Code Online (Sandbox Code Playgroud)
在此代码中,反应器在完成tcp连接并且传递cmd之前停止.
完成所有操作后,如何停止反应堆?
简单的解决方案是reactor.stop()在检测到退出条件时调用代码中的点.具体来说,看起来你想在CommandClient中的某个地方调用它,我假设它将命令发送到远程机器并接收命令的退出代码.
如上所述,反应堆将启动并立即执行d.callback,然后再进行调用reactor.stop().程序的逻辑和调用之间没有任何联系reactor.stop().将调用移动到程序的核心逻辑中,您应该进行设置.具体来说,我会将您的CommandClient协议connectionMade()和dataReceived()方法视为检测"即时完成"状态的可能候选者.
| 归档时间: |
|
| 查看次数: |
1115 次 |
| 最近记录: |