当我检查celery -A proj inspect active_queues
时,我看到两个服务器显示他们正在侦听的队列,并且他们指向相同的默认队列名celery
。 django app发布的任务仍由两台服务器执行两次(每次芹菜服务器执行一次 - 所以两次)。
我可以看到传输类型也是direct
- 默认传输类型。
我的本地任务执行一次,所以我确信我的django应用程序只调用了一次该任务。
我可以在这里找到什么?
答案 0 :(得分:0)
好的,我查看了文档,我认为您需要在settings.py中设置celerybeat-scheduler,以确保单个调度程序正在安排任务。
http://celery.readthedocs.org/en/latest/configuration.html#celerybeat-scheduler
答案 1 :(得分:0)
在Redis上,您可以为正在运行的应用程序设置当前数据库,设置数据库会将信息分开以使用其他应用程序。
如果您使用的是Django,则配置为
CELERY_BROKER_VHOST = {number of the database}
如果您不使用Django,我相信配置是CELERY_REDIS_DB
或redis_db
,具体取决于您的芹菜版本
例如,您的第一个应用程序可能是CELERY_BROKER_VHOST = 1
对于第二个应用程序可以是CELERY_BROKER_VHOST = 2
对于您的本地发展可能是CELERY_BROKER_VHOST = 99
http://docs.celeryproject.org/en/latest/userguide/configuration.html#id8