芹菜没有同时执行任务

Celery is not executing tasks concurrently

我是 celery 的新手,如果需要更多信息,请在评论中告诉我。

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

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

但是当我检查芹菜花时,有许多芹菜没有使用的空闲线程可用

关于如何利用这些空闲线程并使任务更快的任何想法? 如果可能的话,请推荐一本与芹菜一起工作的好书

这些线程中的每一个都将 运行 500 个 eventlet。如果您的 3000 个任务是 short-lived,他们将很快完成工作。最重要的是,您的预取计数是 400,这意味着当您的 worker(线程)运行 有 500 个协程时,它也将有 400 个预取任务。 3 * (500 + 400) = 2700 个任务将立即从队列中取出,假设您所有的工作人员都空闲。