Python Can';t获取监控过程的输出

Python Can';t获取监控过程的输出,python,monitoring,supervisord,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 [program:mytester] command={path}/tester.py super

我创建了一个测试可执行文件,看看是否可以捕获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
[program:mytester]
command={path}/tester.py
supervisord.conf:

#! /usr/bin/env python

import time, os
pid = os.getpid()
print "EXECUTING ON %s" % pid
while True:
    time.sleep(5)
    print "HOLLER %s" % pid
[program:mytester]
command={path}/tester.py

但是,当我尝试在supervisorctl中对流程运行
尾部时,什么都没有。

您已经有一段时间没有问过了,但如果您仍然感兴趣,并且对于有相同问题的任何人:

在本例中,Python正在缓冲输出,在刷新到标准输出之前,您不会看到它。您可以在程序中使用
sys.stdout.flush()
强制刷新,但最干净的修复方法可能是使用Python解释器的
-u
标志以无缓冲模式运行脚本:

supervisord.conf

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

(遇到了同样的问题,并在supervisord中找到了解决方案)

谢谢-我现在没有办法测试你的答案,但似乎是正确的!在我的例子中,所有日志都直接转到/tmp-e.g./tmp/test\u python--supervisor-Lt44XR.log。主管会忽略我在配置文件中所做的所有工作,将它们放在其他地方。@patriciasz,那么当您直接执行程序时(不涉及主管),您是否会将输出结果发送到stdout?