Celery игнорирует переменные Django settings.py
Я создал тестовую среду Django для производства на Ubuntu 20.04 Sever, следуя этому руководству: Развертывание Django.
Конкретно, я разместил проект Django в:
/opt/mydangoproject/
celery.py
celery_config.py
settings.py
etc
и у меня есть дополнительный 'override' settings.py, который хранит 'секреты', в данном случае переменную входа в celery RABBITMQ_BROKER, она находится в:
/etc/opt/mydangoproject/
settings.py
Я протестировал эту конфигурацию и подтвердил, что настройки в /etc/opt/mydangoproject/ доступны для среды Django, однако они не подхватываются celery. Я подтвердил это, поместив переменную входа RABBITMQ_BROKER в основной файл settings.py (/opt/mydangoproject/), и celery смог получить к нему доступ.
Мой файл celery.py:
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mydangoproject.settings')
app = Celery('mydangoproject')
default_config = 'mydangoproject.celery_config'
app.config_from_object(default_config)
app.autodiscover_tasks()
Настройки.py в /etc/opt/mydjangoproject/ :
from mydangoproject.settings import *
ALLOWED_HOSTS = [‘blah’]
RABBITMQ_BROKER = 'amqp://wabbitadmin:somepassword@somepassword@webserver:5672/mydangoproject'
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': ‘blah’,
'USER': ‘blah’,
'PASSWORD': ‘somepassword',
'HOST': 'localhost',
'PORT': 5432,
}
}
STATIC_ROOT = '/var/cache/mydangoproject/static/'
STATIC_URL = '/static/'
MEDIA_ROOT = '/var/opt/mydangoproject/media/'
MEDIA_URL = '/media/'
Мои вопросы следующие:
- why can't celery access the RabbitMQ login variable.
- How do I fix it?
Измените имя переменной на CELERY_BROKER_URL
будет работать как Celery, ищущий переменную settings в следующем синтаксисе - <NAMESPACE_NAME>_<SETTINGS_VARIABLE>