使用单个 Celery 服务器进行多 Django 项目



我有 3 个独立的 Django 项目共享在同一台机器上运行的同一个数据库。我需要的是为他们配置芹菜。现在我的问题是:

1.) 我是否应该为单独的项目运行单独的芹菜守护进程,并在 rabbitmq 中设置不同的 vhost 和用户,我不想选择,因为这会浪费资源或

2.) 有没有办法将不同项目中的所有任务定位到单个芹菜服务器。

另外,受监督者在解决方案中有多方便?

是的,您可以使用同一个芹菜服务器从不同的项目接收任务。

有一个单独的芹菜应用程序(或只是一个文件)说foo其中包含不同项目中使用的所有任务。

# foo.py    
from celery import Celery
app = Celery(broker='amqp://guest@localhost//')
@app.task
def add(x, y):
    return x + y
@app.task
def sub(x, y):
    return x - y

启动辅助角色以运行任务

celery worker -l info -A foo

现在从项目 A 中,您可以调用add

import celery
celery.current_app.send_task('foo.add', args=(1, 2))

从项目B中,您可以调用sub

import celery
celery.current_app.send_task('foo.sub', args=(1, 2))

您可以使用主管来管理芹菜工人。

这种方法对于测试来说可能稍微困难一些,因为send_task不会尊重CELERY_ALWAYS_EAGER。但是,您可以使用此代码段,以便send_task CELERY_ALWAYS_EAGER将遵守。

相关内容

  • 没有找到相关文章

最新更新