无法获得supervisord监控过程的输出

时间:2012-08-15 11:44:47

标签: python monitoring supervisord

我创建了一个测试可执行文件,以查看是否可以捕获由Supervisord监控的程序的输出。

tester.py:

#! /usr/bin/env python

import time, os
pid = os.getpid()
print "EXECUTING ON %s" % pid
while True:
    time.sleep(5)
    print "HOLLER %s" % pid

supervisord.conf:

[program:mytester]
command={path}/tester.py

但是当我尝试在supervisorctl中对进程运行tail时,没有。

1 个答案:

答案 0 :(得分:1)

自从你提出要求以来已经有一段时间了,但是如果你仍然感兴趣并且对于有同样问题的任何人:

在这种情况下,Python会缓冲输出,直到刷新到stdout才会看到它。您可以在程序中强制使用sys.stdout.flush()刷新,但最简单的修复方法是使用Python解释器的-u标志以 unbuffered mode 运行脚本:

<强> supervisord.conf

[program:mytester]
command=python -u {path}/tester.py

(有同样的问题并在supervisord的mailing list中找到解决方案)