在 Django Celery 中使用 .env 中的环境变量
Using environment variables from .env in 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 worker
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
文件将环境文件服务器发送给 Celery worker?
不确定如何使用 dotenv 执行此操作,但我在一些 celery 任务中使用 python-decouple 从 .env
文件中提取参数。
from decouple import config
AUTH_USER = config('AUTH_USER')
AUTH_PASS = config('AUTH_PASS')
通过在celery配置文件中加载环境变量解决
celery.py
env_file = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), '.env')
dotenv.read_dotenv(env_file)
我正在使用 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 worker
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
文件将环境文件服务器发送给 Celery worker?
不确定如何使用 dotenv 执行此操作,但我在一些 celery 任务中使用 python-decouple 从 .env
文件中提取参数。
from decouple import config
AUTH_USER = config('AUTH_USER')
AUTH_PASS = config('AUTH_PASS')
通过在celery配置文件中加载环境变量解决
celery.py
env_file = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), '.env')
dotenv.read_dotenv(env_file)