Использование переменных окружения из.env в Django Celery
Я использую Django 2.x и Celery 4.3.x
В моем приложении Django я использую dotenv для обслуживания переменной окружения из .env
файл и загрузить переменную среды, у меня есть следующий скрипт в manage.py
а также wsgy.py
файлы
env_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), '.env')
dotenv.read_dotenv(env_file)
Переменные среды имеют учетные данные AWS, используемые anymail
Плагин для отправки почты с использованием SES.
Теперь я использую задачу Celery для отправки электронной почты и запускаю работника celery из командной строки, используя
celery -A myapp worker -l debug
Работник работает, но при отправке электронной почты выдает ошибку в задаче сельдерея как
ERROR/ForkPoolWorker-2] An error occurred (AccessDenied) when calling
the SendRawEmail operation: User `arn:aws:iam::user_id:user/my-laptop` is not
authorized to permorm this action...
Кажется, я пытаюсь подключиться к пользователю моего ноутбука, а не использовать учетные данные, определенные в .env
файл.
Как я могу использовать .env
файл на сервер файлы окружения для сельдерея?
2 ответа
Решается загрузкой переменной окружения в файле конфигурации сельдерея
celery.py
env_file = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), '.env')
dotenv.read_dotenv(env_file)
Не уверен, как это сделать с dotenv, но я использую python-decouple, чтобы получить параметры из .env
файл в несколько задач сельдерея.
from decouple import config
AUTH_USER = config('AUTH_USER')
AUTH_PASS = config('AUTH_PASS')