2009-07-09 26 views
3

Ich versuche, eine Website mit Pinax zu entwickeln. Um die Modelle mit djapian zu indizieren, habe ich versucht "manage.py index" als Cron-Job auszuführen, aber immer einen Pinax-Fehler zu bekommen. "Fehler: Kein Modul namens Benachrichtigung". Die Aufgabe wird jedoch korrekt ausgeführt, wenn ich sie aus der Shell heraus ausführe. Meine crontab Definition lautet wie folgt:
django "manage.py index" wird nicht als Cron-Job ausgeführt

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 

Kann mir jemand erklären, warum ich diesen Fehler erhalte?

Antwort

6

Ihr Fehler liegt wahrscheinlich daran, dass Sie PYTHONPATH nicht richtig eingestellt haben, insbesondere um den Pfad zum "Benachrichtigungsmodul" einzuschließen. Sie müssen auch den DJANGO_SETTINGS_MODULE-Pfad festlegen, wenn dieser nicht bereits in Ihrer Umgebung festgelegt ist.

Hier ist ein Shell-Skript, das ich verwende, um meine eigene django basierte Crontask zu wickeln:

#!/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 
+0

ars danke für die Antwort. Geführt von Ihrem Vorschlag habe ich das Problem behoben. – kartikq

0

Wie ars erwähnt, cron läuft mit einem ganz anderen Satz von Umgebungsvariablen als Sie. Der einfachste Weg, das zu beheben, besteht darin, ein Skript zu verwenden, das dem ähnlich ist, was er gepostet hat.

Verwandte Themen