source

Flask @app.ro ute에서 python 콘솔로 인쇄하는 방법

nicesource 2023. 9. 21. 20:34
반응형

Flask @app.ro ute에서 python 콘솔로 인쇄하는 방법

사용자가 /버튼을 호출한 후 파이썬 콘솔에 간단히 "헬로 월드"를 인쇄하고자 합니다.

이것이 저의 순진한 접근법입니다.

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

배경:플라스크(조개가 아닌 플라스크)에서 다른 파이썬 명령을 실행하고 싶습니다."print"가 가장 쉬운 경우여야 합니다.저는 여기서 기본적인 반전을 이해하지 못했다고 생각합니다.

이것을 하기 위한 쉬운 방법은 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로 인쇄하는 다른 방법은 이 스택 오버플로우 게시글을 참조하십시오.

또한 로깅을 사용하여 콘솔에 데이터를 인쇄할 수도 있습니다.

예:

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)

플라스크의 핵심적인 문제는 stdout이 완충되는 것이라고 생각합니다.인쇄를 할 수 있었습니다.print('Hi', flush=True). 또한 다음을 설정하여 버퍼링을 비활성화할 수 있습니다.PYTHONUNBUFFEREDenvironment variable(빈 문자열이 아닌 문자열로).

@Viraj Wadate의 코드를 실행해 보았지만 출력을 얻을 수 없었습니다.app.logger.info콘솔에

갖기 위해INFO,WARNING,그리고.ERROR콘솔의 메시지,dictConfigobject를 사용하여 모든 로그(소스)에 대한 로깅 구성을 만들 수 있습니다.

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)

언급URL : https://stackoverflow.com/questions/32550487/how-to-print-from-flask-app-route-to-python-console

반응형