我运行芹菜:
celery multi start --app=myapp fast_worker
slow_worker
-Q:fast_worker fast-queue
-Q:slow_worker slow-queue
-c:fast_worker 1 -c:slow_worker 1
--logfile=%n.log --pidfile=%n.pid和celerybeat:
celery beat -A myapp任务:
@task.periodic_task(run_every=timedelta(seconds=5), ignore_result=True)
def test_log_task_queue():
import time
time.sleep(10)
print "test_log_task_queue"路由:
CELERY_ROUTES = {
'myapp.tasks.test_log_task_queue': {
'queue': 'slow-queue',
'routing_key': 'slow-queue',
},
}我使用rabbitMQ。当我打开rabbitMQ管理面板时,我看到我的任务在slow-queue中,但当我打开日志时,我看到两个工作进程的任务输出。为什么两个工作进程都执行我的任务,即使任务不在工作队列中?
发布于 2017-05-04 19:01:29
看起来像是celery multi创建了类似共享队列的东西。为了解决这个问题,我添加了-X选项:
celery multi start --app=myapp fast_worker
slow_worker
-Q:fast_worker fast-queue
-Q:slow_worker slow-queue
-X:fast_worker slow-queue
-X:slow_worker fast-queue
-c:fast_worker 1 -c:slow_worker 1
--logfile=%n.log --pidfile=%n.pidhttps://stackoverflow.com/questions/43739202
复制相似问题