django“manage.py 索引” 不作为 cron 作业执行
我正在尝试使用 pinax 开发一个网站。 为了使用 djapian 索引模型,我一直在尝试将 "manage.py index" 作为 cron 作业运行,但不断收到 pinax 错误。 “错误:没有名为通知的模块”。 但是,当我从 shell 运行该任务时,该任务可以正确执行。 我的 crontab 定义如下:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/mypath/test_project
# m h dom mon dow user command
*/1 * * * * root python /root/mypath/test_project/manage.py index >>/tmp/backup.log 2>&1
任何人都可以解释为什么我收到此错误吗?
I am trying to develop a site using pinax.
To index the models using djapian I've been trying to run "manage.py index" as a cron job but keep getting a pinax error. "Error: No module named notification". However the task executes correctly when i run it from the shell. My crontab definition is as follows:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/mypath/test_project
# m h dom mon dow user command
*/1 * * * * root python /root/mypath/test_project/manage.py index >>/tmp/backup.log 2>&1
Can anyone explain why I am receiving this error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的错误可能是因为您没有正确设置 PYTHONPATH,尤其是包含“通知”模块的路径。 您还需要设置 DJANGO_SETTINGS_MODULE 路径(如果您的环境中尚未设置)。
这是我用来包装我自己的基于 django 的 cron 任务的 shell 脚本:
Your error is probably because you don't have your PYTHONPATH set properly, especially to include the path to the "notification" module. You also need to set the DJANGO_SETTINGS_MODULE path, if it isn't already set in your environment.
Here's a shell script I use to wrap my own django based cron task:
正如 ars 所提到的, cron 运行时使用了一组与您完全不同的环境变量。 解决这个问题的最简单方法是使用与他发布的脚本类似的脚本。
As ars alluded to, cron runs with an entirely different set of environment variables than you do. The easiest way to fix that is to use a script similar to what he posted.