Flask: debugger live System

Django, Flask, Bottle, WSGI, CGI…
Antworten
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

Moin,
ich hätte da ne allg. Frage, ist es möglich (und wenn ja wie) den Debug output, glaube das ist werkzeug wenn ich mich nicht irre auch auf nem Livesystem zu bekommen, irgendwie in ne Text datei?
Ist manchmal etwas schwer den genauen Fehler zu finden. Das setup sieht bei mir wie folgt aus.
VirtualEnv -> Flask -> Uwsgi -> Nginx
Bei Fehlern bekomme ich von nginx dann nur ein internal server error (500).
Ich würde aber gerne wie geschrieben den debug output bekommen, wie wenn ich debug=True in der server_start setzte und das ganze direkt mit python aufrufe, nicht auf der website, aber als consolen output oder als redirect in ne textdatei daher die Frage ob das irgendwie möglich ist.

Hoffe es ist in etwa klar was ich genau meine.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ich gebe hier keine Lösung, weil ich Nginx nicht kenne und mit Flask bestimmt ein Jahr oder mehr nicht gearbeitet habe. Deshalb nur ganz grober Hinweis.

Wenn du bei Apache einen Internal Server Error bekommst (egal ob Python, PHP oder sonst eine Sprache) dann findest du in deinem Error Log vom Websever den Traceback (bei Apache /var/log/apache2/error.log).

Aber eine andere Sache: Wenn du bei deiner App Debugging aktivierst (` app.debug = True `) bekommst du dann nicht den interaktiven Debugger? Ich vermute du hattest vorher `app.run(debug=True)` und deshalb ist dein Debug auf dem produktiv System weg?

Noch ein Hinweis falls es funktioniert: Der interaktive Debugger ist vermutlich ein Sicherheitsrisiko für das System.
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

@Sr4l:
deine Vermutung ist richtig.

app.debug = True (im view)
war die richtige Lösung.
Allerdings bekomme ich output nicht vom webserver sondern von uwsgi, was mir auch ganz gut passt, der Webserver liefert lediglich ein Bad Gateway (502)
Das macht das debuggen etwas entspannter.
Darf nur nicht vergessen den nachher wieder auszuschalten, sicher ist sicher.

Vielen Dank für die Hilfe.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Der Debugger erlaubt es jedem beliebigen Code auf dem Server auszuführen. Auf keinen Fall sollte dieser jemals in einem Produktivsystem genutzt werden. Wenn du mehr Informationen über eine Exception haben willst schau in den Log deines Webservers, wenn dein WSGI Server den 500 ausliefert also in dem Log von diesem statt Apache oder Nginx.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Zumal es auch keinen Grund gibt nicht lokal mit dem Python WSGI Server zu entwickeln. Du brauchst dann lediglich die Datenbank. Das ist viel entspannter als Logs auf dem Server zuwälzen. Wenn du schon auf einem öffentlichem Server entwickelst solltest du wenigstens irgend ein Authentication vom Webserver davor haben.
taake
User
Beiträge: 125
Registriert: Donnerstag 14. Oktober 2010, 08:49

Im Normalfall entwickel ich das ganze auch lokal bevor ich es auf den Server aufspiele, allerdings lief lokal alles und auf dem live system hat eine Sache nicht funktioniert.

Wie sich rausstellte hatte ich lediglich vergessen das ich eine Column in der Datenbank umbeannt hatte und zwar nur lokal und nicht auf dem Livesystem, ohne den Debugoutput würde ich jetzt wohl noch rätseln, hatte das total vergessen das ich das gemacht hatte.
Antworten