“为什么我用transport.write发送的数据需要很长时间才能到达连接的另一端?”Twisted只有在您将执行控制权交给反应器后才能发送数据。例如,如果您有一个无限循环向传输写入数据,由于控制权永远不会离开您的代码并返回到反应器,所以实际上永远不会发送数据。” 我在Twisted FAQ中找到了这个问题,这正是我的问题。有没有办法解决这个问题,使我可以立即发送消息而不必等待循环完成?
不可以立即发送消息,必须将控制返回到事件循环。不过幸运的是,你实际想要解决的问题(从问题注释中推断出来),即限制发送的消息速率,并不需要能够立即发送消息。相反,停止在循环中使用time.sleep,开始使用reactor.callLater来延迟代码执行。或者使用IRC API的功能来代替这些操作(你似乎已经发现了lineRate)。
\n
一次性编写5行。 - Jakob Bowyer