这篇文章延续了我之前的帖子 - 芹菜 如何在多个工作线程并行执行的情况下实现单个队列?
我使用以下命令实现了芹菜以使用事件:-
celery -A project worker -P eventlet -l info --concurrency=4
我可以看到我的任务更快地移动到活动列表(花朵(,但我不确定它们是否并行执行?我有一个用于生产的 4 核服务器,但我没有同时使用所有核心。
我的问题是:-
如何使用所有 4 个内核并行执行任务?
两种 eventlet/gevent worker 类型都为并发提供了很好的解决方案,但代价是将并行性停滞到 1。要实现真正的并行任务执行并利用内核,请在同一台计算机上运行多个 Celery 实例。
我知道这与流行的 Linux 发行版的想法背道而驰,所以只需忽略系统包并从头开始推出您的出色配置即可。系统服务模板是您的朋友。
另一种选择是使用预分叉池运行 Celery,以延迟并发到工作线程数为代价获得并行性。