Итак, я уже много искал для этого, но не нашел хорошего ответа. Я использую Celery 3.1.7 и Django 1.5.1 без пакета django-celery, так как более новые версии Celery больше не требуют этого. Мне удалось настроить задачи и выполнить их с помощью RabbitMQ. Там все работает как надо. Однако я интегрирую это в существующий довольно большой проект Django. Там мы указали пару файлов настроек Django, а не один. Мы запускаем разные в зависимости от среды, например, один для локальных машин и один для сервера. Моя проблема в том, что я не могу отследить, какой файл настроек является «активным» от работника celery, который запускает файл celery.py в корне моего проекта (как указано в документации). Там документация требует указать файл настроек Django следующим образом:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', "project.settings.server")
Теперь это работает, но если я перемещаю материал локально, мне нужно изменить его на settings.local
, чтобы он работал, и так каждый раз. Чтение объекта настроек во время выполнения, как я делаю в стандартных файлах Django, не работает, поскольку celery worker выполняется в другом процессе. Итак, используя эту ситуацию, кто-нибудь знает, как динамически извлекать активный файл настроек Django из celery worker? Или, возможно, передать его как переменную при запуске celery worker? (например, для Django и т. д. --settings=project.settings.local) Спасибо!