"为什么我使用transport.write发送的数据需要很长时间才能到达连接的另一端?"
Twisted只能在您放弃对反应堆的执行控制后发送数据。例如,如果您有一个无限循环将数据写入传输,则实际上永远不会发送数据,因为控制永远不会离开您的代码并返回到反应堆。"
我在扭曲的FAQ中发现了这一点,这正是我的问题所在。有没有办法解决这个问题,所以我可以立即发送消息而不是等待循环完成?
答案 0 :(得分:4)
没有。您无法立即发送消息。控件必须返回事件循环。幸运的是,你真正试图解决的问题(从问题的评论推断),限制你发送的消息,不需要能够做到这一点。相反,请在循环中停止使用time.sleep
并开始使用reactor.callLater
来延迟代码的执行。或者使用IRC API的功能为您做这些事情(您似乎已经发现了lineRate
)。