0

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 库之后使用不会刷新它在我的日志文件中的输出吗?

谢谢 !

4

0 回答 0