访问Django模型的crontab脚本因ImportError而失败

时间:2014-08-25 08:59:24

标签: python django cron

我正在尝试使用crontab定期执行python脚本。我按照here给出的解决方案使用virtualenv执行命令。以下是我的crontab

SHELL=/bin/bash
HOME=/
MAILTO="myid@example.com"
* * * * * cd /home/jaskaran/edmhunters && /home/jaskaran/edmhunters/env/bin/python /home/jaskaran/edmhunters/scripts/db/songlist.py

我一直得到这个ImportError

Traceback (most recent call last):
 File "/home/jaskaran/edmhunters/scripts/db/songlist.py", line 4, in <module>
   from hunt.models import DJ, Song
ImportError: No module named hunt.models

从shell运行时,脚本运行正常。我错过了什么?

1 个答案:

答案 0 :(得分:0)

Django导入错误通常会产生误导,因为Django会加载其INSTALLED_APPLICATIONS以及Django尝试访问其设置时所有隐式代码。

要解决此问题,请从脚本中创建Django management command

如果您需要从shell脚本或cron运行virtualenv'ed Django脚本或管理命令,请尝试此语法:

 export DJANGO_SETTINGS_MODULE=mymodule.settings ; /srv/django/myproject/venv/bin/python /srv/django/myproject/manage.py MyManagementCommand