2012-08-15 2 views
2

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

그것은 잠시왔다,하지만 경우에 당신은 여전히 ​​관심이이 같은 문제가 누군가를 위해이다 : 파이썬은 출력을 버퍼링하고 플러시 될 때까지 당신이 그것을 볼 수 없습니다이 경우

을 stdout. 당신은 당신의 프로그램에 sys.stdout.flush()와 플러시를 강제 할 수 있지만, 아마도 그것을 해결의 가장 깨끗한 방법은 파이썬 인터프리터의 -u 플래그 버퍼링 모드에서 스크립트를 실행하는 것입니다 :

supervisord.conf

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

는 (같은 문제를했고 mailing list supervisord의에서 솔루션 있음) 내가 지금 대답을 테스트하는 방법이 있지만,없는 고마워 -

+0

잘 것을! 내 경우에는 모든 로그가/tmp로 곧바로 이동했습니다. 예 : – Yarin

+0

/tmp/test_python---supervisor-Lt44XR.log. 관리자는 config 파일에서 내 모든 노력을 무시하고 다른 곳으로 옮길 것입니다. – patriciasz

+0

@patriciasz, supervisord가 포함되지 않은 상태에서 직접 프로그램을 실행할 때 출력을 stdout으로 가져 옵니까? – pacha

관련 문제