Frage

Ich versuche, einen benutzerdefinierten Django -Befehl als geplante Aufgabe auf Heroku auszuführen. Ich kann den benutzerdefinierten Befehl lokal über: python manage.py send_daily_email. (Hinweis: Ich habe keine Probleme mit dem Befehl benutzerdefinierter Verwaltungsbefehl selbst)

Heroku gibt mir jedoch die folgende Ausnahme, wenn ich versuche, die Aufgabe durch Heroku Scheduler Addon zu "ausführen":

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

Ich platzierte ein Python -Skript in /bin/send_daily_email.py, und es ist Folgendes:

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

Innerhalb von Heroku kann ich jedoch rennen heroku run bin/python - Starten Sie die Python Shell - und importieren erfolgreich settings aus django.conf

Ich bin mir ziemlich sicher, dass es etwas mit meinem zu tun hat PYTHON_PATH oder Sichtbarkeit von Django's SETTINGS_MODULE, aber ich bin mir nicht sicher, wie ich das Problem lösen soll. Könnte mich jemand in die richtige Richtung zeigen? Gibt es eine einfachere Möglichkeit, das zu erreichen, was ich hier zu tun versuche?

Vielen Dank für Ihre Tipps und Ratschläge im Voraus! Neu in Heroku! :)

BEARBEITEN:

Gemäß Nix 'Kommentar habe ich einige Anpassungen vorgenommen und festgestellt, dass ich meinen exakten Python -Pfad angegeben habe. Ich habe das Django -Setup vorbeigekommen.

Ich erhalte jetzt:

  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'

Ich kann jedoch "send_daily_email" sehen, wenn ich "Heroku run bin bin/python App/verwalten".

Ich werde ein Update durchführen, wenn ich auf die Antwort stoße.

War es hilfreich?

Lösung

Sie verwenden wahrscheinlich einen anderen Dolmetscher.

Überprüfen Sie, ob Shell Python das gleiche ist wie der, den Sie in Ihrem Skript/USR/bin/python verweisen. Es könnte sein, dass es einen anderen auf Ihrem Weg gibt, was erklären würde, warum es beim Laufen funktioniert python manage.py Aber nicht Ihr Shell -Scrip, auf das Sie ausdrücklich verweisen /usr/bin/python.


Typisierung which python Ich werde Ihnen sagen, welcher Dolmetscher auf Ihrem Weg gefunden wird.

Andere Tipps

Darüber hinaus kann dies auch gelöst werden, indem Ihr Home -Verzeichnis zu Ihrem Python -Pfad hinzugefügt wird. Eine schnelle und unauffällige Möglichkeit, es zu erreichen, besteht darin, es der Pythonpath -Umgebungsvariable hinzuzufügen (die im Allgemeinen /App auf dem Heroku -Zedernstapel ist).

Fügen Sie es über den Befehl heroku config hinzu:

$ heroku config:add PYTHONPATH=/app

Das sollte es tun! Für mehr Details: http://tomatohater.com/2012/01/17/custom-django-management-commands-heroku/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top