5

Supervisord のイベント リスナーを設定しようとしていますが、機能しません。PROCESS_STATE の変更をリッスンし、urllib2request をトリガーする Python コードを実行したいだけです。

私の .conf には次のものがあります。

[eventlistener:statechanges]
command=python listener.py
events=PROCESS_STATE

そして、listener.py で:

def run():    
    runFunc() # Function to trigger an urllib2request

if __name__ == '__main__':
    run()

その後、トリガーは開始されず、再試行後に FATAL 状態になります。

statechanges entered FATAL state, too many start retries too quickly

スーパーバイザーのリスナーを作成する方法のアイデアや例はありますか?

4

2 に答える 2

5

ランダムな文字列を出力することはできません.supervisordはstdoutでリッスンします:)

ドキュメントからのこの例はどうですか:

import sys

def write_stdout(s):
    sys.stdout.write(s)
    sys.stdout.flush()

def write_stderr(s):
    sys.stderr.write(s)
    sys.stderr.flush()

def main():
    while 1:
        write_stdout('READY\n') # transition from ACKNOWLEDGED to READY
        line = sys.stdin.readline()  # read header line from stdin
        write_stderr(line) # print it out to stderr
        headers = dict([ x.split(':') for x in line.split() ])
        data = sys.stdin.read(int(headers['len'])) # read the event payload
        write_stderr(data) # print the event payload to stderr
        write_stdout('RESULT 2\nOK') # transition from READY to ACKNOWLEDGED

if __name__ == '__main__':
    main()
    import sys

http://supervisord.org/events.html#example-event-listener-implementation

于 2013-02-26T09:54:19.890 に答える