Python 长时间操作的生成器与回调?

Python 长时间操作的生成器与回调?,python,asynchronous,Python,Asynchronous,大多数情况下,人们似乎建议为无线程异步操作使用生成器。在最上面的回答中,他们声称回调是丑陋的(但可行的) 我有一个网络刮板,将返回数据从一个网络链接列表。对于每个链接,我希望它要么产生,要么回调该特定链接的处理数据。每个操作都需要几个HTTP调用,在慢速网络上可能需要数百或数千毫秒才能完成。我想知道当操作本身需要很长时间(可能是无限期)才能完成时,什么是最佳实践 在这种情况下,您真正谈论的是协同程序,而不是生成器。我想说这是一个基于观点的问题,它是围绕回调构建的,非常流行。Python3.4引入

大多数情况下,人们似乎建议为无线程异步操作使用生成器。在最上面的回答中,他们声称回调是丑陋的(但可行的)


我有一个网络刮板,将返回数据从一个网络链接列表。对于每个链接,我希望它要么产生,要么回调该特定链接的处理数据。每个操作都需要几个HTTP调用,在慢速网络上可能需要数百或数千毫秒才能完成。我想知道当操作本身需要很长时间(可能是无限期)才能完成时,什么是最佳实践

在这种情况下,您真正谈论的是协同程序,而不是生成器。我想说这是一个基于观点的问题,它是围绕回调构建的,非常流行。Python3.4引入了该模块,该模块可用于回调,但也支持协同路由。也可以同时支持两者,但支持协同程序。很可能这三个框架(或任何其他异步框架)中的任何一个都能很好地满足您的需要。此外,Twisted.的作者提供了一些关于此主题的有趣阅读资料。我不确定这里是否有“最佳实践”。这是并发控制,可以通过参与者模型、协同路由、事件驱动等来实现(但这通常是一个很好的问题——只是IHMO——固执己见)。