python - 扭曲的 react 堆过早停止

标签 python networking twisted

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

相关文章:

python - 如何计算 groupby 中缺少信息的唯一组的数量?

python - 如何在 Windows Server 2012 上使用 "OverflowError: Python int too large to convert to C long"错误进行转换?

python - 如何使用 Python 在不接触附件的情况下有效地解析电子邮件

networking - 尝试从 Docker 容器中访问 etcd 时获取 "connection refused"

python - 在 Python 中实现二进制协议(protocol)(扭曲)

python - 有没有什么办法可以用扭曲的方式异步发布一些数据?

python - 如何使用 t.c.telnet 构建端点

python - 如何在 rethinkdb 中制作涉及字符串字段的映射?

java - 将单用户 Apache Derby 数据库转换为用户数据库

python - 扭曲的 python 中的 SSL 证书和 key - 缺少私钥客户端?