我目前正在运行芹菜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
参数解决我的问题吗?另外,但是它意味着“它将并行处理任务,但它不会并行消耗消息”?