我创建了一个测试可执行文件,以查看是否可以捕获由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
时,没有。
答案 0 :(得分:1)
自从你提出要求以来已经有一段时间了,但是如果你仍然感兴趣并且对于有同样问题的任何人:
在这种情况下,Python会缓冲输出,直到刷新到stdout才会看到它。您可以在程序中强制使用sys.stdout.flush()
刷新,但最简单的修复方法是使用Python解释器的-u
标志以 unbuffered mode 运行脚本:
<强> supervisord.conf 强>
[program:mytester]
command=python -u {path}/tester.py
(有同样的问题并在supervisord的mailing list中找到解决方案)