Подтвердить что ты не робот

Как печатать из Flask @app.route в консоль python

Я хотел бы просто напечатать "hello world" на консоли python, после чего пользователь вызывается /.

Это мой наивный подход:

@app.route('/button/')
def button_clicked():
    print 'Hello world!'
    return redirect('/')

Фон: Я хотел бы выполнить другие команды python из фляжки (а не оболочки). "Печать" должна быть самым простым. По-моему, я не понял основной поворот здесь. Спасибо заранее!

4b9b3361

Ответ 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.