控制Twisted反应堆的最佳方法是什么,它是无阻塞的?

时间:2010-11-14 06:10:12

标签: python twisted nonblocking

我不想运行reactor.run(),而是在维护自己的主循环的同时偶尔调用别的东西(我不喜欢,像reactor.runOnce()或其他东西)。扭曲的是否有最好的做法?

1 个答案:

答案 0 :(得分:11)

是。最好的做法是,这是一个坏主意,而你真的不需要这样做。它不适用于所有反应堆,你当然不能有两个不同的库想要这样做。

为什么需要维护自己的主循环?机会是,它类似于“我想使用PyGame”或“我正在编写GUI程序,我想使用GTK的主循环”或“我在Blender中使用Twisted并且它有自己的事件处理”。如果是这种情况,您应该询问具体问题,因为每个问题都有自己的答案。

如果绝对需要这样做(并且,再次:你没有),那么这样做的方法是定期调用reactor.iterate()。这将是缓慢的,中断信号处理,并且相对于reactor.stop()具有不稳定的语义。它会在你的程序中引入许多错误,否则就会出现错误,当你需要帮助诊断它们时,如果你问Twisted开发团队的人,他们会告诉你的第一件事就是“停止这样做,你不要不需要这样做。