芹菜如何实现单个队列,多个工作程序并行执行

时间:2017-03-15 10:16:48

标签: python parallel-processing celery

我目前正在运行芹菜4.0.2,只有这样一个工人:

celery.py:

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

if __name__ == '__main__':
    app.start()
    app.name

tasks.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,
    },
}

我使用以下命令以beat:

运行
 celery -A project worker -l info --concurrency=3 --beat -E

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

  

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

我在互联网上查看了如何使用多处理来运行芹菜。根据{{​​3}}文章:

  

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

可以使用-p processes参数解决我的问题吗?另外,但是它意味着“它将并行处理任务,但它不会并行消耗消息”?

0 个答案:

没有答案