Question

Je suis en train d'exécuter une commande de django personnalisé comme une tâche planifiée sur Heroku. Je suis en mesure d'exécuter la commande personnalisée localement via: python manage.py send_daily_email. (Note: Je n'ai pas de problèmes avec la commande de gestion personnalisée lui-même)

Cependant, Heroku me donne l'exception suivante lorsque vous essayez de "Exécuter" la tâche par addon Heroku Scheduler:

Traceback (most recent call last):
  File "bin/send_daily_visit_email.py", line 2, in <module>
    from django.conf import settings
ImportError: No module named django.conf

Je placé un script python /bin/send_daily_email.py , et il est le suivant:

#! /usr/bin/python
from django.conf import settings
settings.configure()
from django.core import management

management.call_command('send_daily_email') #delegates off to custom command

Dans Heroku, cependant, je suis en mesure d'exécuter heroku run bin/python - lancer le shell python - et settings avec succès l'importation de django.conf

Je suis sûr qu'il a quelque chose à voir avec mon PYTHON_PATH ou de la visibilité au SETTINGS_MODULE de Django, mais je ne suis pas sûr comment résoudre le problème. Quelqu'un peut-il m'indiquer la bonne direction? Y at-il un moyen plus facile d'accomplir ce que je suis en train de faire ici?

Merci beaucoup pour vos conseils et des conseils à l'avance! Nouveau sur Heroku! :)

EDIT:

Commentaire de Per Nix, j'ai fait quelques ajustements, et avons découvert que mon chemin spécifiant python exact, je l'ai fait passer le programme d'installation de Django.

Je reçois maintenant:

  File "/app/lib/python2.7/site-packages/django/core/management/__init__.py", line 155, in call_command
    raise CommandError("Unknown command: %r" % name)
django.core.management.base.CommandError: Unknown command: 'send_daily_email'

Bien, je peux voir 'send_daily_email' quand je lance `` heroku exécuter bin / python app / manage.py```.

Je vais garder une mise à jour si je viens dans la réponse.

Était-ce utile?

La solution

Vous utilisez probablement un autre interprète.

Vérifiez que python shell est le même que celui que vous faites référence dans votre script / usr / bin / python. Il pourrait être qu'il ya un différent dans votre chemin, ce qui expliquerait pourquoi il fonctionne lorsque vous exécutez python manage.py mais pas votre scrip shell que vous explicitement /usr/bin/python de référence.


which python Typing vous dira ce que l'interprète a bien été trouvé sur votre chemin.

Autres conseils

De plus, cela peut aussi être résolu en ajoutant votre répertoire à votre chemin Python. Un moyen rapide et discret pour y parvenir est d'ajouter à la variable d'environnement PYTHONPATH (qui est généralement / app sur la pile Cedar Heroku).

Ajoutez via la commande config Heroku:

$ heroku config:add PYTHONPATH=/app

Cela devrait le faire! Pour plus de détails: http://tomatohater.com/ 2012/01/17 / custom-django-gestion-commandes-sur-heroku /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top