何时应将协议处理代码拆分为Twisted中的Deferreds?

时间:2013-01-16 13:37:17

标签: python twisted

在Twisted中实现客户端协议,我当前的代码在收到的每个协议单元上做了很多工作,它不使用I / O,因此当前没有使用Deferred。 处理并不意味着密集,但它对可插拔接口开放。

是否存在执行此分区的阈值?

1 个答案:

答案 0 :(得分:1)

您可能会考虑在将要调用插件的位置“推迟”,因为您无法预测他们是否会对数据库,远程进程,Web服务等进行任何I / O操作。

使用@inlineCallbacks进行研究,只需使用Python的yield语句,就可以简化您在处理Deferreds方面的生活。然后,您可以尝试以各种方式分解计算密集型工作,或许为其他协议处理程序提供运行和完成的机会,尤其是如果某些处理程序是计算密集型而其他处理程序不是。