Twisted:在反应堆过载的情况下降低性能?

时间:2010-08-06 12:45:58

标签: python performance twisted

是否有可能“检测”反应堆过载并开始断开连接或拒绝新连接?我们怎样才能避免反应堆完全超载而无法赶上?

3 个答案:

答案 0 :(得分:1)

如果我正确理解Twisted Reactors,它们不会并行化所有内容。排队的任何操作都是按计划进行的,并且是逐个完成的。

一种方法是让自定义addCallback检查已经注册了多少回调,并在必要时删除。

答案 1 :(得分:1)

没有简单的方法,但这里有一些建议:http://www.mail-archive.com/twisted-python@twistedmatrix.com/msg00389.html

答案 2 :(得分:1)

我会按照协议来解决这个问题。在实际服务需要时节流,而不是在您认为它时。我不担心有多少回调在等待反应堆滴答,而是担心HTTP请求(例如)需要多长时间才能完成。等待反应堆的操作数可能是一个实现细节 - 例如,如果一个访问模式最终在长DeferredLists上回调,而另一个具有更线性的回调链,则响应的时间可能没有差异,即使回调数量将是。

这可以通过保持时间度量来完成逻辑操作(例如服务HTTP请求)来完成。这样做的一个优点是它可以在问题发生之前为您提供重要信息。