2009-07-09 7 views
3

J'essaye de développer un site utilisant pinax. Pour indexer les modèles en utilisant djapian, j'essayais d'exécuter "manage.py index" comme tâche cron mais je reçois toujours une erreur pinax. "Erreur: aucun module nommé notification". Cependant, la tâche s'exécute correctement lorsque je l'exécute à partir du shell. Ma définition crontab est la suivante:
django "manage.py index" ne s'exécute pas comme un travail cron

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 

Quelqu'un peut-il expliquer pourquoi je reçois cette erreur?

Répondre

6

Votre erreur est probablement dû au fait que votre PYTHONPATH n'est pas correctement défini, en particulier pour inclure le chemin d'accès au module "notification". Vous devez également définir le chemin DJANGO_SETTINGS_MODULE s'il n'est pas déjà défini dans votre environnement.

Voici un script shell que j'utilise pour envelopper ma propre tâche cron basée django:

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

Merci pour la réponse. Guidé par votre suggestion, j'ai résolu le problème. – kartikq

0

Comme ars fait allusion, sera exécutée avec un ensemble tout à fait différent des variables d'environnement que vous faites. Le moyen le plus simple de résoudre ce problème est d'utiliser un script similaire à ce qu'il a posté.

Questions connexes