3

“为什么我用 transport.write 发送的数据需要很长时间才能到达连接的另一端?”

Twisted 只能在您放弃对反应器的执行控制后才能发送数据。例如,如果您有一个无限循环将数据写入传输,则数据将永远不会真正发送,因为控制永远不会离开您的代码并返回反应堆。”

我在扭曲的常见问题解答中发现了这一点,这正是我的问题。有没有办法解决这个问题,所以我可以立即发送消息而不是等待循环完成?

4

1 回答 1

4

不可以。您不能立即发送消息。控制必须返回到事件循环。幸运的是,您真正要解决的问题(从对问题的评论推断),限制您发送的消息的速率,并不需要能够做到这一点。相反,停止time.sleep在循环中使用并开始使用reactor.callLater来延迟代码的执行。或者使用 IRC API 的特性来为你做这些事情(你似乎已经发现了,lineRate)。

于 2012-05-31T16:42:08.023 回答