在同一项目中为2个Django应用程序运行Celery任务?

时间:2020-01-31 10:33:16

标签: django celery

我有一个Django项目,该项目需要Celery任务才能为其两个应用程序运行。我想知道是否有一种方法可以同时运行两个文件celery.py。

文件树:

src
|--api 
|      |-- init.py
|      |-- otherFiles
|      |-- celery 
|          |-- celery.py
| 
|--xyz 
|      |-- init.py
|      |-- otherFiles
|      |-- celery 
|         |-- celery.py
|
|--otherApps

如果要手动运行Celery应用,我将运行:

source venv/bin/activate
cd src
celery worker -A api

在另一个终端:

source venv/bin/activate
cd src
celery worker -A xyz

两个芹菜工人需要访问相同的数据库。

这是我的芹菜文件的样子:

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api.settings")
app = Celery("api")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()

另一个将app = Celery('api')替换为app = Celery('xyz')

这是处理此问题的正确方法吗?我可以创建一个脚本并从中运行两个任务吗?

如果没有,守护它的最佳方法是什么?

生产服务器正在运行Ubuntu 18.04和python 3.6.9,因此尽管也欢迎提出建议,我仍计划使用systemd。

0 个答案:

没有答案