在 Twisted 中实现客户端协议,我当前的代码在收到的每个协议单元上做了很多工作,它不使用 I/O,因此当前没有使用延迟。该处理并不意味着密集,但它对可插拔接口开放。
做这个分区有门槛吗?
您可能会考虑在将要调用插件的位置“延迟”,因为您无法预测它们是否会对数据库、远程进程、Web 服务等进行任何 I/O。
研究using ,这将简化您的生活,只需使用 Python 的语句@inlineCallbacks
将您的处理分解为 Deferreds 。yield
然后你可以尝试以各种方式分解你的计算密集型工作,也许是为了让其他协议处理程序有机会运行和完成,特别是如果一些处理程序是计算密集型而其他处理程序不是。