芹菜不是同时执行任务

时间:2019-06-22 07:30:28

标签: python django redis celery

我是芹菜的新手,如果需要更多信息,请在评论中让我知道。

我大约有3000个任务在redis中排队,我想在多个线程上同时执行这些任务,经过一番研究,我最终使用eventlet进行线程池化,并将并发设置为500,就像这样

celery worker -A <app_name> -P eventlet -c 500

但是当我检查芹菜花时,有许多可用的芹菜未使用的线程 enter image description here

关于如何利用那些空闲线程并使任务更快的想法? 另外,如果可能的话,请建议您阅读有关芹菜的好书

1 个答案:

答案 0 :(得分:1)

每个线程将运行500个eventlet。如果您的3000个任务是短命的,它们将很快完成工作。最重要的是,您的预取计数为400,这意味着当您的工作程序(线程)运行500个协程时,它还将具有400个预取任务。假设您所有的工人都闲着,则3 *(500 + 400)= 2700个任务将立即从队列中提取。