簡體   English   中英

如何從 Flask @app.route 打印到 python 控制台

[英]How to print from Flask @app.route to python console

我想在用戶調用 /button 后簡單地將“hello world”打印到 python 控制台。

這是我天真的方法:

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

背景:我想從flask(不是shell)執行其他python命令。 “打印”應該是最簡單的情況。 我相信我還沒有理解這里的基本轉折。 提前致謝!

一個簡單的方法是打印到 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('/')

Flask 將在控制台中顯示打印到 stderr 的內容。 有關打印到 stderr 的其他方式,請參閱此 stackoverflow 帖子

我們還可以使用日志記錄在控制台上打印數據。

例子:

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)

我認為 Flask 的核心問題是 stdout 被緩沖。 我能夠使用print('Hi', flush=True)進行print('Hi', flush=True) 您還可以通過設置PYTHONUNBUFFERED環境變量(任何非空字符串)來禁用緩沖。

我嘗試運行@Viraj Wadate 的代碼,但無法從控制台上的app.logger.info獲取輸出。

要在控制台中獲取INFOWARNINGERROR消息,可以使用dictConfig對象為所有日志()創建日志記錄配置:

from logging.config import dictConfig
from flask import Flask


dictConfig({
    'version': 1,
    'formatters': {'default': {
        'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
    }},
    'handlers': {'wsgi': {
        'class': 'logging.StreamHandler',
        'stream': 'ext://flask.logging.wsgi_errors_stream',
        'formatter': 'default'
    }},
    'root': {
        'level': 'INFO',
        'handlers': ['wsgi']
    }
})


app = Flask(__name__)

@app.route('/')
def index():
    return "Hello from Flask's test environment"

@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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM