crontab 没有获取我当前的环境变量

crontab not getting my current envrioment variables

我想要一个 cron 作业,一切都已经设置好,cron 也在工作,但不幸的是,cron 没有获取我的环境变量。我正在使用 os 获取我的环境变量,它们在整个项目中都运行良好,但在我的 cron 中却没有。

settings.py

SECRET_KEY = os.environ.get('SECRET_KEY')

# Cron Jobs
CRONJOBS = [
    ('* * * * *', 'projects.cron.notifications_cron', '>> /cron/django_cron.log 2<&1')
]

crontab -e

 * * * * /usr/local/bin/python /app/manage.py crontab run 744fbefdbf3ad30bec13

error in log file

raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

当我在 settings.py 中设置硬编码的 SECRET_KEY 时,它工作正常,但我想从我的环境变量中获取它。

您可以将环境变量分配到 crontab 环境文件中 (crontab -e),因此我将所有环境变量转换为 env.txt 并将 crontab 环境文件合并到 env.txt文件并用我的 env.txt.

替换 crontab 环境文件

crontab -e默认:

0 */24 * * * /usr/local/bin/python /app/manage.py crontab run 5d758d881d8f93b61f4d1b6a43eb72f6 >> /cron/django_cron.log 2<&1 # django-cronjobs for app

如果您像下面那样在该文件中分配一些变量,那么 crontab 将获得该环境。

VARIABLE=value
0 */24 * * * /usr/local/bin/python /app/manage.py crontab run 5d758d881d8f93b61f4d1b6a43eb72f6 >> /cron/django_cron.log 2<&1 # django-cronjobs for app

这里是bash实现的命令

$ printenv > env.txt # this will add all your environment variables in to env.txt
$ cat /var/spool/cron/crontabs/root >> env.txt # this will merge crontab environment file with your env.txt
$ cat env.txt > /var/spool/cron/crontabs/root # this will replace the crontab environment file with your env.txt

这是我自己制作的唯一解决方案,希望它能对你们有所帮助。谢谢