Supervisor: рдПрдХ рдШрдЯрдирд╛ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдЬреВрди 2015  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Supervisor/supervisor

рдирдорд╕реНрддреЗ, рдореБрдЭреЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░рд╛рдЬреНрдп рдШрдЯрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдХреЗрд╡рд▓ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рд╕реНрд╡рдпрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВред рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓ рдиреАрдЪреЗ рд╣реИ:

[program:sample]
directory=/data/
command=/bin/bash -c 'while sleep 1; do echo "test"; done'
redirect_stderr=true
log_stdout=true             ; if true, log program stdout (default true)
log_stderr=true             ; if true, log program stderr (def false)
stdout_logfile=/data/logs/supervisord/sample.log    ; child log path, use NONE for none; default AUTO
stdout_logfile_maxbytes=50MB        ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=3         ; # of logfile backups (default 10)

[program:cat]
directory=/data/
command=/bin/cat
redirect_stderr=true
log_stdout=true             ; if true, log program stdout (default true)
log_stderr=true             ; if true, log program stderr (def false)
stdout_logfile=/data/logs/supervisord/cat.log    ; child log path, use NONE for none; default AUTO
stdout_logfile_maxbytes=50MB        ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=3         ; # of logfile backups (default 10)

[eventlistener:event]
command=/opt/python/bin/python /etc/supervisord.d/event.py
events=PROCESS_STATE
redirect_stderr=true
log_stdout=true             ; if true, log program stdout (default true)
log_stderr=true             ; if true, log program stderr (def false)
stdout_logfile=/data/logs/supervisord/x.log    ; child log path, use NONE for none; default AUTO
stdout_logfile_maxbytes=50MB        ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=3         ; # of logfile backups (default 10)
buffer_size=10

рдореЗрд░реА рдШрдЯрдирд╛.py

#! /opt/python/bin/python
import sys
from supervisor.childutils import listener

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 True:
        headers, body = listener.wait(sys.stdin, sys.stdout)
        body = dict([pair.split(":") for pair in body.split(" ")])

        write_stderr("Headers: %r\n" % repr(headers))
        write_stderr("Body: %r\n" % repr(body))

        if headers["eventname"] == "PROCESS_STATE_RUNNING":
            write_stderr("Process state running...\n")

if __name__ == '__main__':
    main()

рдореЗрд░рд╛ рд▓реЙрдЧ

Headers: "{'ver': '3.0', 'poolserial': '0', 'len': '60', 'server': 'supervisor', 'eventname': 'PROCESS_STATE_STARTING', 'serial': '117', 'pool': 'event'}"
Body: "{'from_state': 'STOPPED', 'processname': 'event', 'tries': '0', 'groupname': 'event'}"
READY
READY
Headers: "{'ver': '3.0', 'poolserial': '0', 'len': '60', 'server': 'supervisor', 'eventname': 'PROCESS_STATE_STARTING', 'serial': '133', 'pool': 'event'}"
Body: "{'from_state': 'STOPPED', 'processname': 'event', 'tries': '0', 'groupname': 'event'}"
READY
READY
Headers: "{'ver': '3.0', 'poolserial': '0', 'len': '60', 'server': 'supervisor', 'eventname': 'PROCESS_STATE_STARTING', 'serial': '145', 'pool': 'event'}"
Body: "{'from_state': 'STOPPED', 'processname': 'event', 'tries': '0', 'groupname': 'event'}"
READY

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдореИрдВ рдирдореВрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдШрдЯрдирд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХреЙрдорд╛рдВрдб supervisorctl restart sample рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ
рджреЛрд╕реНрддреЛрдВ, рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдкрд╡рд┐рддреНрд░ рдмрдХрд╡рд╛рд╕, рдЕрдм рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдШрдЯрдирд╛ рдХреЛ рдХреНрдпреЛрдВ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рд░реЗрдбреА, рд░рд┐рдЬрд▓реНрдЯ рд╡рдЧреИрд░рд╣ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ ...

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕рдВрдмрдВрдзрд┐рдд: #252

@mnaberez thxред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдВрдХ 2 рдЬреБрд▓рд╛рдИ 2013 рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдкрд╡рд┐рддреНрд░ рдмрдХрд╡рд╛рд╕, рдЕрдм рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдШрдЯрдирд╛ рдХреЛ рдХреНрдпреЛрдВ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рд░реЗрдбреА, рд░рд┐рдЬрд▓реНрдЯ рд╡рдЧреИрд░рд╣ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ ...

рдпрджрд┐ redirect_stderr=true рдХреЛ [eventlistener:x] рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ supervisord рдЕрдм рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рд░реБрдХ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ 4420af41f34ef183e857d372e1a22af641de3149 рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ 3.2 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

YxAc picture YxAc  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vBlackOut picture vBlackOut  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

abevoelker picture abevoelker  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tkf picture tkf  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

guettli picture guettli  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ