Verständnisfrage zu Fundstück - web server environment - exceptions und stdout

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
SnakeBite
User
Beiträge: 46
Registriert: Mittwoch 4. März 2009, 18:26

Hallo.

Disclaimer: Ich bin Anfänger

Ich habe bei einem Python Modul gerade folgenden Text gefunden:

Code: Alles auswählen

Maintain a Python 2 and Python 3 library (with an optional CLI wrapper) suited to use in web server environments (never raise an exception, never write to stdout, etc.)
Wenn ich also ein Script/Modul für so etwas wie Flask/Django/etc... entwickle sollte ich auf exceptions und Nachrichten an stdout verzichten.

Meine Fragen:

1. Wenn in meinem Script etwas falsch läuft, dann bricht es doch sowieso ab. Wieso macht es dann nen Unterschied ob ich exceptions habe oder nicht. Diese exceptions dienen doch nur dazu die Errormeldungen verständlicher zu gestalten!? Wie würde man es richtig machen? Einfach gar keine exception und davon ausgehen dass der Developer dann schon weiß was schiefgelaufen ist?
2. Warum nicht an stdout schreiben? Was würde meine gunicorn/nginx Kombi denn machen wenn ich etwas an stdout schreiben würde? Würde es dann auch von gunicorn ausgegeben werden? Das ist ja jetzt bereits auch schon so mit den Statusmeldungen. Was wäre die Alternative? Wie würde man es "richtig" machen? EInfach python logging?

Danke schonmal

Sorry wenn es n00b Fragen sind. Ich versteh es einfach nicht ganz 100%
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@SnakeBite: was der Autor damit genau meint, mußt Du ihn selber fragen. Wenn Fehler auftreten, sollte dies mit Exceptions gemacht werden; Funktionen geben normalerweise nichts auf stdout aus, für Meldungen kann man logging benutzen.

Im Hinblick auf Web: wird bei der Abarbeitung eines Requests eine Exception ausgelöst, so wird normalerweise ein passender HTTP-Error zurückgegeben. Im Debug-Modus mit Traceback, in Produktivsystemen eine nichtssagende Meldung, weil ein Traceback vertrauliche Informationen enthalten könnte. Da das für den Anwender nicht sehr hilfreich ist, ist es gute Praktik Exceptions in aussagekräftige Meldungen umzuwandeln.
SnakeBite
User
Beiträge: 46
Registriert: Mittwoch 4. März 2009, 18:26

Hallo Sirius.

Du würdest dies dann also nicht so sehen wie der Author des Moduls? Sprich exceptions sind in Ordnung (so mache ich es bisher auch) und den Output an stdout sehe ich auch nicht weiter problematisch.

Danke für die Klarstellung. Es hat mich einfach nur gewundert und ich wollte mal ne dritte Meinung dazu.
Antworten