Как печатать из Flask @app.route в консоль python
Я хотел бы просто напечатать "hello world" на консоли python, после чего пользователь вызывается /.
Это мой наивный подход:
@app.route('/button/')
def button_clicked():
print 'Hello world!'
return redirect('/')
Фон: Я хотел бы выполнить другие команды python из фляжки (а не оболочки). "Печать" должна быть самым простым.
По-моему, я не понял основной поворот здесь.
Спасибо заранее!
Ответы
Ответ 1
Похоже, что вы это разработали, но для других, которые ищут этот ответ, простой способ сделать это - печать на stderr. Вы можете сделать это вот так:
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('/')
Флажок отобразит все данные, напечатанные на stderr в консоли. Для других способов печати в stderr см. fooobar.com/questions/11537/...
Ответ 2
Мы также можем использовать ведение журнала для печати данных на консоли.
Пример:
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)
Ответ 3
Я думаю, что основная проблема с Flask заключается в том, что стандартный вывод буферизуется. Я был в состоянии печатать с print('Hi', flush=True)
. Вы также можете отключить буферизацию, установив переменную окружения PYTHONUNBUFFERED
.