Twisted irc python bot - 缓冲消息

Posted

技术标签:

【中文标题】Twisted irc python bot - 缓冲消息【英文标题】:Twisted irc python bot - buffering messages 【发布时间】:2012-06-05 15:31:56 【问题描述】:

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

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

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

【问题讨论】:

确实没有一种简单的方法来刷新传出的 Twisted 缓冲区,您应该保持轻量级执行。 但我的机器人需要它。我需要用命令写 10 行(每 2 秒 1 行)。这是不可能的,因为twisted 只是在一秒钟内写完所有的行并且它会产生过多的洪水。 \n一次写5行 用 \n 一次 5 行是什么意思? 我真的修好了,好像有一个 lineRate 可以设置。有用。 :) 无论如何谢谢大家 【参考方案1】:

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

【讨论】:

以上是关于Twisted irc python bot - 缓冲消息的主要内容,如果未能解决你的问题,请参考以下文章

Twisted Python IRC bot - 如何异步执行函数以便它不会阻塞机器人?

Twisted IRC Bot 与本地主机的连接反复丢失

Irc-bot 使用扭曲与期刊印刷

Python/Twisted IRC 机器人日志记录问题

Python twisted irc - 登录时的服务器密码

Python Twisted IRC,发送颜色信息