我是芹菜的新手,如果需要更多信息,请在评论中让我知道。
我大约有3000个任务在redis中排队,我想在多个线程上同时执行这些任务,经过一番研究,我最终使用eventlet进行线程池化,并将并发设置为500,就像这样
celery worker -A <app_name> -P eventlet -c 500
关于如何利用那些空闲线程并使任务更快的想法? 另外,如果可能的话,请建议您阅读有关芹菜的好书
答案 0 :(得分:1)
每个线程将运行500个eventlet。如果您的3000个任务是短命的,它们将很快完成工作。最重要的是,您的预取计数为400,这意味着当您的工作程序(线程)运行500个协程时,它还将具有400个预取任务。假设您所有的工人都闲着,则3 *(500 + 400)= 2700个任务将立即从队列中提取。