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论证可以解决我的问题吗?另外,“它将并行处理任务,但不会并行消费消息”是什么意思?
| 归档时间: |
|
| 查看次数: |
1291 次 |
| 最近记录: |