导入盐会导致 flask 在终端中不输出任何内容
Importing salt causes flask to output nothing in the terminal
假设我有以下 foo.py
文件:
#import salt
from flask import Flask
app = Flask(__name__)
@app.route('/')
def slash():
return 'foo'
if __name__ == '__main__':
app.run(debug=True)
如果我 运行 python foo.py
我得到这个输出,一切都很好:
* Running on http://127.0.0.1:5000/
* Restarting with reloader
现在,如果我取消对 import salt
行和 运行 python foo.py
的注释,我在终端中什么也得不到,尽管我可以通过 curl 确认我的网络应用确实是 运行宁。 Salt Stack API 和 Flask 之间是否存在任何冲突,或者我是否发现了错误?
我在 virtualenv 中使用 Flask 0.10.1 和 Salt 2014.7.0 以及 Python 2.7.6。
编辑: 我发现这是怎么回事,尽管我仍然不确定解决方案是什么。 Salt 调用 logging.setLoggerClass(SaltLoggingClass)
作为其初始化的一部分,因此从那时起 SaltLoggingClass
被用作我们的日志记录 class,甚至在其他模块中也是如此。
好的,我知道这是怎么回事,我也找到了解决方法。正如我在上次编辑中所说,这是 Salt 所做的,正如已经报道的那样 here。解决方法是在导入 Salt 之前自行初始化日志记录。像这样:
import sys
import logging
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, format="%(message)s")
# Now we can import salt.
import salt
我认为这不是 Salt 的最佳决定,但我们必须处理我们得到的东西!
假设我有以下 foo.py
文件:
#import salt
from flask import Flask
app = Flask(__name__)
@app.route('/')
def slash():
return 'foo'
if __name__ == '__main__':
app.run(debug=True)
如果我 运行 python foo.py
我得到这个输出,一切都很好:
* Running on http://127.0.0.1:5000/
* Restarting with reloader
现在,如果我取消对 import salt
行和 运行 python foo.py
的注释,我在终端中什么也得不到,尽管我可以通过 curl 确认我的网络应用确实是 运行宁。 Salt Stack API 和 Flask 之间是否存在任何冲突,或者我是否发现了错误?
我在 virtualenv 中使用 Flask 0.10.1 和 Salt 2014.7.0 以及 Python 2.7.6。
编辑: 我发现这是怎么回事,尽管我仍然不确定解决方案是什么。 Salt 调用 logging.setLoggerClass(SaltLoggingClass)
作为其初始化的一部分,因此从那时起 SaltLoggingClass
被用作我们的日志记录 class,甚至在其他模块中也是如此。
好的,我知道这是怎么回事,我也找到了解决方法。正如我在上次编辑中所说,这是 Salt 所做的,正如已经报道的那样 here。解决方法是在导入 Salt 之前自行初始化日志记录。像这样:
import sys
import logging
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, format="%(message)s")
# Now we can import salt.
import salt
我认为这不是 Salt 的最佳决定,但我们必须处理我们得到的东西!