Celery не может прочитать значение из файла env после запуска супервизором

Я столкнулся с проблемой, если я запускаю celery worker локально с помощью celery -A project worker -l info. Задачи Celery могут получить доступ к переменным из .env файла (я использую django-environ для чтения .env файла). Но на рабочем сервере это вызывает проблемы после запуска супервизором. Если ключ не существует в .env файле, он выдает ошибку, так как он должен быть внутри задач. Но когда я правильно устанавливаю все переменные, он читает их без ошибки, но читает их как пустые строки. Я также использую firebase_admin для уведомлений. С ним тоже возникает такая же проблема.

import firebase_admin

firebase_admin.initialize_app()

Так я устанавливаю приложение по умолчанию в settings.py, и файл учетной записи службы fcm также находится в каталоге моего проекта. Локально задача уведомления отправляет уведомление должным образом. Но после запуска супервизором она выдает ошибку File Not Found. Это меня очень смущает.

Следующий файл celery.conf:

from __future__ import absolute_import, unicode_literals

import os
from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

app = Celery('project')


# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks()


@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
    pass


@app.task(bind=True)
def debug_task(self):
    print(f'Request: {self.request!r}')

.env файл:

ENV_TYPE="STAGING"
SECTET_KEY="SUPER_SECRET_KEY"

часть чтения файла .env в файле settings.py:

import environ

BASE_DIR = Path(__file__).resolve().parent.parent

env = environ.Env()
environ.Env.read_env((BASE_DIR / '.env').as_posix())  # reading .env file
Вернуться на верх