0

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

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

4

1 回答 1

0

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

Celery 支持使用 eventlet 和 gevent,这可能是您正在做的事情(Web 请求 IO)推荐的并发选项。虽然 Celery 可能不会让您的代码运行得更快,但它可以让您轻松地将工作分配到多台机器上。

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

于 2012-09-14T13:22:57.787 回答