假设我有以下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
作为我们的日志记录类,即使在其他模块中也是如此。
答案 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的最佳决定,但我们必须处理我们得到的东西!