繁体   English   中英

Python + Celery手动路由

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM