Django:将密钥放入crontab fi

2024-09-29 17:45:38 发布

您现在位置:Python中文网/ 问答频道 /正文

根据Greenfeld-Roy的书《两勺Django》,将密钥放入环境变量而不是设置文件是一个很好的做法。所以我遵循了这个建议,但是当尝试在cronjob中执行自写的管理命令时会出现问题。在

过了一会儿,我发现我必须在crontab文件中包含secret key环境变量,否则管理.py无法加载外部模块(这是因为cron只知道一小部分环境变量)。修复后,我的crontab文件如下所示:

DJANGO_SETTINGS_MODULE=myproject.settings
DJANGO_SECRET_KEY=my-project-secret-key

0 0 * * * path/to/python path/to/manage.py management_command

我想知道这是否是一个好的解决方案,或者是否还有其他的解决方案(也许是更多的Python?)解决这个问题的方法。在


Tags: 文件topathdjangokeypysecret环境变量
2条回答

您还应该能够在另一个文件中移动环境变量,例如~/.env,并使crontab看起来像这样:

0 5 * * * source $HOME/.env; /path/to/command/to/run

我建议将命令放在shell脚本中,然后通过cron调用程序。这样cron文件看起来更简单,您可以将导出保存在一个单独的文件中,然后在所有其他脚本中源代码。在

示例脚本(运行_命令.sh)在

#!/bin/bash
DJANGO_SETTINGS_MODULE=myproject.settings
DJANGO_SECRET_KEY=my-project-secret-key
path/to/python path/to/manage.py management_command

现在可以在cron文件中调用此脚本

0 0 * * * path/to/run_command.sh

并确保shell文件是可执行的

相关问题 更多 >

    热门问题