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/'

Мои вопросы следующие:

  1. why can't celery access the RabbitMQ login variable.
  2. How do I fix it?

Измените имя переменной на CELERY_BROKER_URL будет работать как Celery, ищущий переменную settings в следующем синтаксисе - <NAMESPACE_NAME>_<SETTINGS_VARIABLE>

Вернуться на верх