导入盐会导致 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 的最佳决定,但我们必须处理我们得到的东西!