[英]Python + Celery manual routing
我一直在使用Celery设置手动路由,但是似乎无法将特定任务放入特定队列中。 到目前为止,这是我正在进行的工作:
CELERY_QUEUES = {
"default": {
"binding_key": "default"},
"medium": {
"binding_key": "medium"},
"heavy": {
"binding_key": "heavy"},
}
路线定义如下
CELERY_ROUTES = ({ "tasks.some_heavy_task": {
"queue": "heavy",
"routing_key": "tasks.heavy"
}}, )
守护进程开始像
celeryd -l INFO -c 3 -Q heavy
不过,“ some_heavy_task”永远不会运行。 当我删除路由并只有默认队列时,我可以让它们运行。 我在这里做错什么,有什么建议吗?
我为每个任务创建了特殊的celeryconfig文件,所有任务都存储在特殊队列中。 这是示例:
CELERY_IMPORTS = ('cleaner_on_celery.tasks',)
CELERYBEAT_SCHEDULE = {
'cleaner': {
"task": "cleaner_on_celery.tasks.cleaner",
"schedule": timedelta(seconds=CLEANER_TIMEOUT),
},
}
CELERY_QUEUES = {
"cleaner": {"exchange": "cleaner", "binding_key": "cleaner"}
}
CELERY_DEFAULT_QUEUE = "cleaner"
from celeryconfig import *
您可以在底部看到:我导入了常用的celeryconfig模块。 在这种情况下,您可以启动几个celeryd实例。 我也建议将它与supervisor一起使用,在为每个任务创建了supervisor.conf文件之后,您可以轻松地将它们管理为:
supervisorctl start cleaner
supervisorctl stop cleaner
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.