Je voudrais simplement imprimer un "hello world" sur la console python après que le bouton / soit appelé par l'utilisateur.
Voici mon approche naïve:
@app.route('/button/')
def button_clicked():
print 'Hello world!'
return redirect('/')
Contexte: je voudrais exécuter d'autres commandes python à partir de flask (pas de shell). "imprimer" devrait être le cas le plus simple. Je crois que je n'ai pas compris ici une torsion de base. Merci d'avance!
print
vers la réponse. Si vous exécutez le serveur de développement à partir d'une session de terminal, vous y verrez la sortie. Si vous l'exécutez via un serveur WSGI tel que uWSGI, la sortie apparaîtra dans les journaux à la place.Réponses:
Il semble que vous ayez travaillé, mais pour ceux qui recherchent cette réponse, un moyen simple de le faire est d'imprimer sur stderr. Vous pouvez faire cela comme ceci:
from __future__ import print_function # In python 2.7 import sys @app.route('/button/') def button_clicked(): print('Hello world!', file=sys.stderr) return redirect('/')
Flask affichera les éléments imprimés sur stderr dans la console. Pour d'autres façons d'imprimer sur stderr, consultez ce post stackoverflow
la source
from __future__ import print_function
égalementfile=sys.stderr
pour chaque impression? y a-t-il un chemin court pour y arriver?from sys import stderr
,file=stderr
. Dans Python 3+, vous n'avez pas besoinfrom __future__ import print_function
, c'est la fonctionnalité par défaut.pprint(vars(myobject), sys.stderr)
Nous pouvons également utiliser la journalisation pour imprimer des données sur la console.
Exemple:
import logging from flask import Flask app = Flask(__name__) @app.route('/print') def printMsg(): app.logger.warning('testing warning log') app.logger.error('testing error log') app.logger.info('testing info log') return "Check your console" if __name__ == '__main__': app.run(debug=True)
la source
Je pense que le problème principal avec Flask est que stdout est mis en mémoire tampon. J'ai pu imprimer avec
print('Hi', flush=True)
. Vous pouvez également désactiver la mise en mémoire tampon en définissant laPYTHONUNBUFFERED
variable d'environnement (sur n'importe quelle chaîne non vide).la source