У меня есть проект 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, хотя предложения приветствуются.