如何使用Python(Gevent)异步获取内容?

时间:2012-09-14 04:59:43

标签: python celery gevent

该场景是使用RMDB id作为参数保存API请求的响应。 我想从imdv-id tt0000001到tt9999999获取所有电影信息。

现在我正在使用gevent来运行多个线程(gevent.joinall(threads)),它不是那么快。 是否有其他解决方案可以解决这类问题,例如使用Celery + RabbitMQ?

1 个答案:

答案 0 :(得分:0)

对于一个,您必须确保您没有在代码中进行任何阻止调用, 因为这也会阻止其他一切运行,从而减慢整个系统的速度。 阻塞的原因包括紧密循环或未经eventlet的猴子补丁(例如C扩展)修补的IO。

Celery支持使用eventlet& gevent,这可能是推荐的并发性 您正在做什么的选项(Web请求IO)。 Celery可能不会让你的代码运行得更快,但它使你能够轻松地将工作分发给许多机器。

要优化,您应该始终对代码进行分析,以找出瓶颈是什么。它可能是很多东西,例如慢速网络,慢速主机,慢速DNS或其他完全不同的东西。