3

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

测试器.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

但是当我尝试tail在 supervisorctl 的进程上运行时,什么都没有。

4

1 回答 1

3

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

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

supervisord.conf

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

(遇到同样的问题,在 supervisord 的邮件列表中找到了解决方案)

于 2013-07-29T17:03:32.070 回答