supervisor
我使用依赖 C 库来初始化组件的 Python 应用程序(在 下运行)有一个奇怪的行为。
我的问题是当我在那里调用一个函数时,我看不到这个 C 库打印的输出。
应用程序中的所有输出都由logging
模块管理,主管将其重定向到单个日志文件。
所以我认为这只是flush
问题,我尝试了以下方法:
lib.init_func()
sys.stdout.flush()
sys.stderr.flush()
但它不起作用。printf()
我在日志文件中看不到我的。
另外,我注意到如果我尝试重新启动应用程序:
sudo supervisorctl restart all
C 库输出最终会在日志文件末尾刷新!
最后,PYTHONUNBUFFERED=1
在 supervisorctl 中设置使其工作,但我不想因为性能问题而无缓冲地运行我的程序。
--> 有人能解释一下为什么sys.stdout.flush()
在调用 C 库之后使用不会刷新它在我的日志文件中的输出吗?
谢谢 !