“django”;manage.py索引“;不作为cron作业执行

“django”;manage.py索引“;不作为cron作业执行,django,pinax,Django,Pinax,我正在尝试开发一个使用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

我正在尝试开发一个使用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

有人能解释我为什么会收到这个错误吗

您的错误可能是因为您没有正确设置PYTHONPATH,尤其是没有包括“通知”模块的路径。如果环境中尚未设置DJANGO_设置_模块路径,则还需要设置该路径

下面是一个shell脚本,用于包装我自己的基于django的cron任务:

#!/bin/sh
DJANGO_SETTINGS_MODULE=mysettings
export DJANGO_SETTINGS_MODULE

PYTHONPATH=/path/to/python_libs:/path/to/my_django_apps
export PYTHONPATH

/path/to/python /path/to/my_django_script

正如ars所提到的,cron使用的环境变量集与您完全不同。解决这个问题的最简单方法是使用一个与他发布的内容类似的脚本。

ars感谢您的回复。根据你的建议,我已经解决了这个问题。