在服务器中运行两个芹菜工人为两个django应用程序

时间:2017-07-18 17:49:46

标签: python django redis celery

我有一台服务器,其中两个django应用程序正在运行appone,apptwo 对于他们来说,两个芹菜工人开始执行命令:

celery worker -A appone -B --loglevel=INFO


celery worker -A apptwo -B --loglevel=INFO

两者都指向相同的BROKER_URL ='redis:// localhost:6379'

使用db 0和1

设置redis

我可以在两个应用程序的日志中看到这两个应用程序中配置的任务,这会导致警告和错误。

我们可以在django设置中进行配置,使芹菜专门工作而不会干扰彼此的任务吗?

1 个答案:

答案 0 :(得分:1)

您可以route tasks到不同的队列。用两个不同的-Q myqueueX启动Celery,然后在两个Django项目中使用不同的CELERY_DEFAULT_QUEUE

根据您的Celery配置,您的Django设置应如下所示:

CELERY_DEFAULT_QUEUE = 'myqueue1'

您还可以通过以下方式获得更精细的控制:

@celery.task(queue="myqueue3")
def some_task(...):
  pass

此处有更多选项:

How to keep multiple independent celery queues?