导入盐会导致烧瓶在终端输出任何内容

时间:2015-01-20 09:17:07

标签: python flask salt-stack

假设我有以下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作为我们的日志记录类,即使在其他模块中也是如此。

1 个答案:

答案 0 :(得分:4)

好的,我发现了这里发生了什么,我也找到了解决方法。正如我在上次编辑中所说,这是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的最佳决定,但我们必须处理我们得到的东西!