celery如何实现多个worker并行执行的单个队列

Man*_*pta 5 python parallel-processing celery

我目前正在使用一个工作人员运行 celery 4.0.2,如下所示:

芹菜.py:

app = Celery('project',
         broker='amqp://jimmy:jimmy123@localhost/jimmy_vhost',
         backend='rpc://',
         include=['project.tasks'])

if __name__ == '__main__':
    app.start()
    app.name
Run Code Online (Sandbox Code Playgroud)

任务.py:

from .celery import app
from celery.schedules import schedule
from time import sleep, strftime

app.conf.beat_schedule = {
    'planner_1': {
        'task': 'project.tasks.call_orders',
        'schedule': 1800,
    },
    'planner_2': {
        'task': 'project.tasks.call_inventory',
        'schedule': 900,
    },
}
Run Code Online (Sandbox Code Playgroud)

我使用以下命令来运行beat:

 celery -A project worker -l info --concurrency=3 --beat -E
Run Code Online (Sandbox Code Playgroud)

现在它只是一个队列,只有一个工作人员在运行。

我的问题是如何使用多个工作人员和单个队列运行 celery,以便使用多处理并行执行任务而不重复?

我在互联网上查找了如何使用多处理运行芹菜。根据这篇文章:

celery worker -l info -P processes -c 16 将导致单个消息使用者将工作委托给 16 个操作系统级池进程。在多核环境中,每个操作系统级进程可以分配给不同的CPU,因此它将并行处理任务,但不会并行消费消息。

使用-p processes论证可以解决我的问题吗?另外,“它将并行处理任务,但不会并行消费消息”是什么意思?