此帖子与我之前发布的帖子celery how to implement single queue with multiple workers executing in parallel?
相同我使用此命令实现了celery以使用eventlet: -
celery -A project worker -P eventlet -l info --concurrency=4
我可以看到我的任务更快地被移动到活动列表(在花中)但我不确定它们是否并行执行?我有一个4核服务器用于生产,但我没有同时使用所有核心。
我的问题是: -
如何使用所有4个内核并行执行任务?
答案 0 :(得分:1)
两种eventlet / gevent工作类型都提供了很好的并发解决方案,代价是将并行性停滞为1.要实现真正的并行任务执行并利用内核,请在同一台机器上运行多个Celery实例。
我知道这与流行的Linux发行版有什么相反,所以只需忽略系统包并从头开始滚动你的优秀配置。系统服务模板是你的朋友。
另一种选择是使用prefork池运行Celery,你会以并发性为代价来保持并行性,而不是工作人员数量。