我有一个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。