我用RabbitMQ安装了Celery.问题是,对于返回的每个结果,Celery将在Rabbit中创建,在交换celeryresults中使用任务的ID进行排队.
我仍然希望得到结果,但是在一个队列上.
我的celeryconfig:
from datetime import timedelta OKER_URL = 'amqp://' CELERY_RESULT_BACKEND = 'amqp' #CELERY_IGNORE_RESULT = True CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_ACCEPT_CONTENT=['json', 'application/json'] CELERY_TIMEZONE = 'Europe/Oslo' CELERY_ENABLE_UTC = True from celery.schedules import crontab CELERYBEAT_SCHEDULE = { 'every-minute': { 'task': 'tasks.remote', 'schedule': timedelta(seconds=30), 'args': (), }, }
那可能吗?怎么样?
谢谢!
没什么不寻常的.
这就是当我们使用amqp作为结果后端时celery的工作方式.它将为与工作者消耗的每个任务相对应的每个结果创建一个新的临时队列.
如果您对结果不感兴趣,可以尝试CELERY_IGNORE_RESULT = True设置
如果你确实想存储结果,那么我建议使用像Redis这样的不同结果后端.
amqp后端为每个任务创建一个新队列.或者,有一个新的rpc后端,它将结果保存在一个队列中.
http://docs.celeryproject.org/en/master/whatsnew-3.1.html#new-rpc-result-backend