Python 为多个Django项目使用单个芹菜服务器
我有3个单独的Django项目,它们共享同一台机器上运行的同一个DB。 我需要的是为他们配置芹菜。 现在我的问题是: 1.)我是否应该为单独的项目运行单独的芹菜守护进程,并在rabbitmq中设置不同的vHost和用户,我不想选择这些,因为这样会浪费资源或资源 2.)是否有一种方法可以将来自不同项目的所有任务定向到单个芹菜服务器Python 为多个Django项目使用单个芹菜服务器,python,django,celery,Python,Django,Celery,我有3个单独的Django项目,它们共享同一台机器上运行的同一个DB。 我需要的是为他们配置芹菜。 现在我的问题是: 1.)我是否应该为单独的项目运行单独的芹菜守护进程,并在rabbitmq中设置不同的vHost和用户,我不想选择这些,因为这样会浪费资源或资源 2.)是否有一种方法可以将来自不同项目的所有任务定向到单个芹菜服务器 另外,在解决方案中有多方便?是的,您可以使用同一台芹菜服务器从不同的项目接收任务 # foo.py from celery import Celery app
另外,在解决方案中有多方便?是的,您可以使用同一台芹菜服务器从不同的项目接收任务
# 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
有一个单独的芹菜应用程序(或者只有一个文件),比如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))
您可以使用supervisord来管理芹菜工人
这种方法可能更难测试,因为
send\u task
不会尊重芹菜。但是,您可以使用,这样芹菜\u ALWAYS\u Earge
将通过发送任务
获得荣誉,项目A和项目B如何知道如何连接到代理?是少了一块,还是我少了什么?也许这是我的错