PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  4h^c@sdZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl m Z ddlmZddlmZd fd YZd Zd Zeed ZdZedkrendS(ssupervisord -- run a set of applications as daemons. Usage: %s [options] Options: -c/--configuration FILENAME -- configuration file path (searches if not given) -n/--nodaemon -- run in the foreground (same as 'nodaemon=true' in config file) -h/--help -- print this usage message and exit -v/--version -- print supervisord version number and exit -u/--user USER -- run supervisord as this user (or numeric uid) -m/--umask UMASK -- use this umask for daemon subprocess (default is 022) -d/--directory DIRECTORY -- directory to chdir to when daemonized -l/--logfile FILENAME -- use FILENAME as logfile path -y/--logfile_maxbytes BYTES -- use BYTES to limit the max size of logfile -z/--logfile_backups NUM -- number of backups to keep when max bytes reached -e/--loglevel LEVEL -- use LEVEL as log level (debug,info,warn,error,critical) -j/--pidfile FILENAME -- write a pid file for the daemon process to FILENAME -i/--identifier STR -- identifier used for this instance of supervisord -q/--childlogdir DIRECTORY -- the log directory for child process logs -k/--nocleanup -- prevent the process from performing cleanup (removal of old automatic child log files) at startup. -a/--minfds NUM -- the minimum number of file descriptors for start success -t/--strip_ansi -- strip ansi escape codes from process output --minprocs NUM -- the minimum number of processes available for start success --profile_options OPTIONS -- run supervisord under profiler and output results based on OPTIONS, which is a comma-sep'd list of 'cumulative', 'calls', and/or 'callers', e.g. 'cumulative,callers') iN(t asyncore_25(t ServerOptions(tsigname(tevents(tSupervisorStates(tgetProcessStateDescriptiont SupervisorcBseZeZdZdZdZdZdZ dZ ddZ dZ dZ dZdZd Zd Zd Zdd Zedd ZdZdZRS(icCs||_i|_i|_dS(N(toptionstprocess_groupstticks(tselfR((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyt__init__5s  cCs||jjs|jjn|jj|jjrE|jjn|jj|jjsn|jjn|jdS(N( Rtfirstt cleanup_fdstset_uid_or_exittset_rlimits_or_exitt make_loggert nocleanuptclear_autochildlogdirtrun(R ((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pytmain:s     cCsi|_d|_tjzx!|jjD]}|j|q,W|jj|jj ||jj |jj r|jj r|jj n|jj|jWd|jjXdS(N(RtNonet stop_groupsRtclearRtprocess_group_configstadd_process_grouptprocess_environmenttopenhttpserverst setsignalstnodaemonR t daemonizet write_pidfilet runforevertcleanup(R tconfig((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyROs      c Cs!|s|jj}ng|jjD]}|j^q%}ttg|D]}|j^qG|}ttg|D]}|j^qr|}g|D]}|j|kr|^q}g|D]}|j|kr|^q} g|D]'}||j|j|kr|^q} || | fS(N( RRRtvaluesR"tdicttziptnametget( R tnewtgrouptcurtcfgtcurdicttnewdicttcandtaddedtremovedtchanged((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pytdiff_to_activebs%++(( 'cCsS|j}||jkrO|j|j|j||jr:|jj}|jr:|jj|q:ndS(N(RtpopR9tappend(R R)((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pytordered_stop_groups_phase_2s  c Cs tjtjd}|jj}xi}|j||j|j|jj}|j |jj t j kr|j st|_ ||_tjtjn|j|jstjqnx^|jD]P\}}|jr|jjj|n|jr|jjj|qqW|jjj|\}}x|D]}|j|rYyS||}|jjjdd||j|js|jjj |nWqtjk rq||j!qXqYqYWx|D]}|j|ryS||}|jjjdd||j"|jsd|jjj#|nWqtjk r~q||j!qXqqWx|D]} | j$qW|j%|j&|j'|jj t j kr|j(n|jj)r+Pq+q+dS(Nis#read event caused by %(dispatcher)rt dispatchers$write event caused by %(dispatcher)r(*RR5tSupervisorRunningEventRtget_socket_mapR=RARR#tsorttmoodRtRUNNINGtstoppingR7RtSupervisorStoppingEventRSRQtasyncoretExitNowtitemstreadabletpollertregister_readabletwritabletregister_writabletpollthas_keyRFRIthandle_read_eventtunregister_readablet handle_errorthandle_write_eventtunregister_writablet transitiontreapt handle_signalttickRVttest( R ttimeoutt socket_mapt combined_mapR@tfdRWtrtwR)((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyR sx                         cCs|dkrtj}nxtjD]}|j}|jj|}|dkrot||}|j|sN(t__name__t __module__R8R]RDRRRR RRR2RR<RARQRSRVR RqRoRpRH(((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyR/s&         P  cCst|||S(N(tint(Rztwhen((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyR{Asc Csyddl}Wntk r/ddl}nXddl}ddl}|j\}} zi|j|||| |j| } | j| j |pd|r| j dn | j dWdt j | XdS(Nit cumulativetcallsRCg333333?(RRstime(tcProfilet ImportErrortprofiletpstatsttempfiletmkstemptrunctxtStatst strip_dirst sort_statst print_callerst print_statstostremove( tcmdtglobalstlocalst sort_ordertcallersRRRRvtfntstats((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyREs     cCst}xt}|j|dt||_||_|jrn|j\}}tdtt ||n t ||j |j t }|s|jtjkr Pq q dS(Ntdocs go(options)(R7Rtrealizet__doc__R Rrtprofile_optionsRRRtgotclose_httpserverst close_loggerR8R[RR(targsRrR RRR((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyR\s       cCs5t|}y|jWntjk r0nXdS(N(RRR_R`(Rtd((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyRps  t__main__(RRRCterrnotselectRtsupervisor.medusaRR_tsupervisor.optionsRRt supervisorRtsupervisor.statesRRRR{RRR8RRR(((s:/usr/lib/python2.7/site-packages/supervisor/supervisord.pyts&