Ich möchte einfach eine "Hallo Welt" auf die Python-Konsole drucken, nachdem / button vom Benutzer aufgerufen wurde.
Das ist mein naiver Ansatz:
@app.route('/button/')
def button_clicked():
print 'Hello world!'
return redirect('/')
Hintergrund: Ich möchte andere Python-Befehle von flask (nicht shell) ausführen. "Drucken" sollte der einfachste Fall sein. Ich glaube, ich habe hier keine grundlegende Wendung verstanden. Danke im Voraus!
print
zur Antwort weiter. Wenn Sie den Entwicklungsserver von einer Terminalsitzung aus ausführen, wird dort die Ausgabe angezeigt. Wenn Sie es über einen WSGI-Server wie uWSGI ausführen, wird die Ausgabe stattdessen in den Protokollen angezeigt.Antworten:
Es scheint, als hätten Sie es geschafft, aber für andere, die nach dieser Antwort suchen, ist eine einfache Möglichkeit, dies zu tun, das Drucken auf stderr. Sie können das so machen:
Flask zeigt Dinge an, die in der Konsole auf stderr gedruckt wurden. Weitere Möglichkeiten zum Drucken auf stderr finden Sie in diesem Beitrag zum Stapelüberlauf
quelle
from __future__ import print_function
auchfile=sys.stderr
für jeden Druck hinzufügen ? Gibt es einen kurzen Weg dorthin?from sys import stderr
,file=stderr
. In Python 3+ benötigen Sie nichtfrom __future__ import print_function
, das ist die Standardfunktionalität.pprint(vars(myobject), sys.stderr)
Wir können die Protokollierung auch verwenden, um Daten auf der Konsole zu drucken.
Beispiel:
quelle
Ich denke, das Kernproblem bei Flask ist, dass stdout gepuffert wird. Ich konnte mit drucken
print('Hi', flush=True)
. Sie können die Pufferung auch deaktivieren, indem Sie diePYTHONUNBUFFERED
Umgebungsvariable (auf eine nicht leere Zeichenfolge) setzen.quelle