【发布时间】:2021-11-02 02:43:19
【问题描述】:
我正在开发一个使用 Celery 执行定期任务的 Django 项目。为了提高安全性,我将 Django 的 SECRET_KEY 移到了环境变量中。该应用程序运行良好,因此 Django 肯定能够找到环境变量并设置 SECRET_KEY。但一个意想不到的副作用是所有定期发生的定期任务都停止触发。我能够从 Django Admin 手动运行任务,因此 Celery 工作人员还活着,但这些任务不会像往常那样自行触发。
应用程序设置和 Celery 配置都位于名为 server 的目录中。这是文件结构:
-server
-__init__.py
-celery.py
-settings.py
在移动密钥之前,它在settings.py 中是这样的:SECRET_KEY = "secret"
移动到环境变量后,settings.py 中的行是这样的:SECRET_KEY = os.environ.get("SECRET_KEY")
这里是celery.py 的内容,如果相关的话:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")
app = Celery("server")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
只要我将密钥从环境变量中移出并放回settings.py,任务就会再次启动。我希望弄清楚为什么移动密钥会破坏定期任务,这样我就可以将密钥移回环境变量而不会产生副作用。谢谢。
【问题讨论】:
标签: django environment-variables celery django-celery