Python 启动flask应用程序隐藏控制台输出?
为什么在这个代码中Python 启动flask应用程序隐藏控制台输出?,python,flask,Python,Flask,为什么在这个代码中 import flask app = flask.Flask(__name__) if __name__ == '__main__': print ("Hello!") # this gets printed to the console x = input("Please type something: ") # this gets shown in the console print ("something never to be seen")
import flask
app = flask.Flask(__name__)
if __name__ == '__main__':
print ("Hello!") # this gets printed to the console
x = input("Please type something: ") # this gets shown in the console
print ("something never to be seen") # this does not get printed
print (x) # neither
app.run(port=5001)
在输入语句之后打印的部件从未在控制台中显示
这就是我的控制台的外观:
$python flask2.py
Hello!
Please type something: asdf
* Running on http://127.0.0.1:5001/ (Press CTRL+C to quit)
似乎启动flask服务器以某种方式隐藏了部分打印内容?标准输出被缓冲,这意味着打印语句输出不一定显示,除非调用sys.stdout.flush标准输出被缓冲,这意味着打印语句输出不必显示,除非调用sys.stdout.flush我认为可以通过使用flask模块并使用logger替换打印来实现 日志记录模块比打印语句更灵活。您会发现,您现在看到的stdout输出也是由日志模块控制的 下面是一个将[INFO]级别的消息记录到文件和标准输出的示例。若你们想打印你们不想在控制台中看到的东西,你们可以使用logger.debug“调试级别的msgs不会显示在[INFO]级别的logger中。”
如果您想在控制台中看到[DEBUG]消息,只需将['handlers']['config']['level']更改为'DEBUG'。我认为您可以通过使用flask模块和使用logger replace print来达到这一目的 日志记录模块比打印语句更灵活。您会发现,您现在看到的stdout输出也是由日志模块控制的 下面是一个将[INFO]级别的消息记录到文件和标准输出的示例。若你们想打印你们不想在控制台中看到的东西,你们可以使用logger.debug“调试级别的msgs不会显示在[INFO]级别的logger中。”
如果您想在控制台中看到[DEBUG]消息,只需将['handlers']['config']['level']更改为“DEBUG”。它会为我显示Python3.6/windows是否可能正在显示这些行,而不是在您期望的位置,例如屏幕下方?我问这个问题是因为print写入stdout,flask写入stderr——这两个常常会混淆,而不管您的代码位于何处。事实上,从CMD运行时不会出现问题,但在我的例子中,在使用Git Bash时会出现问题。现在已解决-缓冲问题。它向我显示Python3.6/windows是否可能正在显示这些行,而不是显示在您期望的位置,例如屏幕下方?我问这个问题是因为print写入stdout,flask写入stderr——这两个常常会混淆,而不管您的代码位于何处。事实上,从CMD运行时不会出现问题,但在我的例子中,在使用Git Bash时会出现问题。现在解决-缓冲问题。现场。请注意,在我的示例中,当从cmd运行python时,Windows上不会发生缓冲,但在使用Git Bash时会发生缓冲。是的,缓冲行为未指定,这意味着不带刷新的打印可能在一个操作系统上正常工作,而在同一操作系统的另一个或甚至另一个版本上也不会。请注意,在我的示例中,当从cmd运行python时,Windows上不会发生缓冲,但在使用Git Bash时会发生缓冲。是的,缓冲行为未指定,这意味着不带刷新的打印可能在一个操作系统上正常工作,而在另一个或甚至同一操作系统的另一个版本上也无法正常工作。
from logging.config import dictConfig
dictConfig({
'version': 1,
'formatters': {
'file_fmt': {
'format': '[%(asctime)s] - %(levelname)s in %(module)s: %(message)s',
},
'console_fmt': {
'format': '[%(asctime)s] - %(levelname)s - %(message)s',
},
},
'handlers': {
'file': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': 'error.log',
'formatter': 'file_fmt',
'level': 'INFO',
},
'console': {
'class': 'logging.StreamHandler',
'formatter': 'console_fmt',
'stream': 'ext://sys.stdout',
'level': 'INFO',
},
},
'root': {
'level': 'INFO',
'handlers': ['file', 'console']
}
})