我正在使用 Django 2.x 和 Celery 4.3.x
在我的 Django 应用程序中,我使用dotenv来提供.env
文件中的环境变量并加载环境变量,我在{{ 1}}和manage.py
文件
wsgy.py
env_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), '.env')
dotenv.read_dotenv(env_file)
插件使用环境变量的AWS凭证通过 SES 发送邮件。
现在,我正在使用Celery任务发送电子邮件并使用以下命令从命令行运行celery worker
anymail
工人正在运行,但是在发送电子邮件时,它在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
文件将环境文件提供给Celery worker?
答案 0 :(得分:0)
不确定如何使用dotenv进行此操作,但在一些芹菜任务中,我使用python-decouple从.env
文件中提取参数。
from decouple import config
AUTH_USER = config('AUTH_USER')
AUTH_PASS = config('AUTH_PASS')
答案 1 :(得分:0)
通过在celery配置文件中加载环境变量来解决
celery.py
env_file = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), '.env')
dotenv.read_dotenv(env_file)