多个芹菜服务器,但同一个redis代理执行任务两次

时间:2014-12-17 04:41:17

标签: django celery

当我检查celery -A proj inspect active_queues时,我看到两个服务器显示他们正在侦听的队列,并且他们指向相同的默认队列名celery。 django app发布的任务仍由两台服务器执行两次(每次芹菜服务器执行一次 - 所以两次)。

我可以看到传输类型也是direct - 默认传输类型。

我的本​​地任务执行一次,所以我确信我的django应用程序只调用了一次该任务。

我可以在这里找到什么?

2 个答案:

答案 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_DBredis_db,具体取决于您的芹菜版本

例如,您的第一个应用程序可能是CELERY_BROKER_VHOST = 1
对于第二个应用程序可以是CELERY_BROKER_VHOST = 2
对于您的本地发展可能是CELERY_BROKER_VHOST = 99

http://docs.celeryproject.org/en/latest/userguide/configuration.html#id8