HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //proc/self/root/usr/local/lib/python3.9/site-packages/celery/apps/__pycache__/multi.cpython-39.pyc
a

X>h�?�@s*dZddlZddlZddlZddlZddlZddlmZmZm	Z	ddl
mZddlm
Z
ddlmZddlmZddlmZdd	lmZmZmZdd
lmZmZmZmZddlmZdZd
Z dd�Z!dd�Z"dd�Z#dd�Z$dd�Z%Gdd�d�Z&Gdd�d�Z'dd�Z(Gdd�d�Z)Gd d!�d!e�Z*dS)"zStart/stop/manage workers.�N)�OrderedDict�UserList�defaultdict)�partial)�Popen)�sleep)�	from_utf8)�cached_property)�
IS_WINDOWS�Pidfile�signal_name)�gethostname�host_format�node_format�	nodesplit)�saferepr)�Cluster�Node�celerycGsd�tf|�S)N� )�join�
CELERY_EXE)�args�r�;/usr/local/lib/python3.9/site-packages/celery/apps/multi.py�
celery_exesrcCsN|}d|vr&t|�}t|�\}}|}n|�|��}t|�d|���}|||fS)N�@)rr)�name�prefix�suffix�hostname�nodename�	shortnamerrr�build_nodenames�r#c	Cstt||||ddd�S)Nz%iz%I)r�N�d�h�i�I)rr)r!r"r rrr�build_expander*s�r)cCs.|s|S|�d�r |�d|��S|�d|��S)N�--�=r)�
startswith)�opt�valuerrr�
format_opt6s

r/cCsdd�|��D�S)NcSs<i|]4\}}t|�dkr*d�|�dd��nd|��|��qS)�z--{}�_�-)�len�format�replace)�.0�k�vrrr�
<dictcomp>?s�
�z+_kwargs_to_command_line.<locals>.<dictcomp>)�items)�kwargsrrr�_kwargs_to_command_line>s�r<c@sDeZdZdd�Zdd�Zddd�Zddd	�Zdd
d�Zdd
d�ZdS)�NamespacedOptionParsercCs,||_t�|_g|_d|_tdd��|_dS)N�cSst�S�N)rrrrr�<lambda>M�z1NamespacedOptionParser.__init__.<locals>.<lambda>)rr�options�values�passthroughr�
namespaces)�selfrrrr�__init__Hs
zNamespacedOptionParser.__init__cCs�dd�|jD�}d}|t|�kr�||}|dkrHd�||d��|_q�n�|ddkr�|ddkrt|�|dd��q�d}t|�|dkr�||dddkr�||d}|d7}|�|dd�|�n|j�|�|d7}qdS)	NcSsg|]}|r|�qSrr)r6�argrrr�
<listcomp>PrAz0NamespacedOptionParser.parse.<locals>.<listcomp>rr*rr2r0�)rr3rrD�process_long_opt�process_short_optrC�append)rF�rargs�posrHr.rrr�parseOs"$zNamespacedOptionParser.parseNcCs,d|vr|�dd�\}}|j||dd�dS)Nr+r0F��short)�split�
add_option�rFrHr.rrrrKdsz'NamespacedOptionParser.process_long_optcCs|j||dd�dS)NTrQ)rTrUrrrrLisz(NamespacedOptionParser.process_short_optcCs$|dur|j}t|fi|j|��Sr?)rBrrE)rF�ns�defaultsrrr�optmergelszNamespacedOptionParser.optmergeFcCsB|rdp
d}|j}d|vr2|�d�\}}|j|}||||<dS)Nr2r*�:)rBrSrE)rFrr.rRrVr�destrrrrTqs
z!NamespacedOptionParser.add_option)N)N)N)FN)	�__name__�
__module__�__qualname__rGrPrKrLrXrTrrrrr=Fs


r=c@s�eZdZdZd*dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	d+dd�Z
d,dd�Zej
ddddfdd�Zd-dd�Zdd�Zdd�Zdd�Zedd��Zedd ��Zed!d"��Zejd#d"��Zed$d%��Z
ed&d'��Zed(d)��ZdS).rzRepresents a node in a cluster.NcCs\||_|pdtdd���|_||_|p(d|_|�|p8t��|_|��|_	|�
�|_d|_dS)Nz-m �workerz--detachr>)
rr�cmdrM�
extra_args�_annotate_with_default_optsrrB�_prepare_expander�expander�
_prepare_argv�argv�_pid)rFrr_rMrBr`rrrrG}s
�

z
Node.__init__cCsD|j|d<|�|ddgd�|�|ddgd�|�|dgtj�|S)	N�-n�	--pidfile�-pz/var/run/celery/%n.pid�	--logfile�-fz/var/log/celery/%n%I.log�--executable)r�_setdefaultopt�sys�
executable)rFrBrrrra�s

z Node._annotate_with_default_optsc	Csv|dd�D]&}z||WSty0Yq0q|�|dtj�|��}tj�|�}|rrtj�|�srt�|�|S)Nr0r)�KeyError�
setdefault�os�path�normpath�dirname�exists�makedirs)rFr%�altr.r-Zdir_pathrrrrm�s
zNode._setdefaultoptcCs |j�dd�\}}t|j||�S)Nrr0)rrSr))rFr"r rrrrb�s�zNode._prepare_expanderc	s����j��d�}|�d�d}�j��}�j��D]2\}}|dvr4|�|t|��|���|�	|�q4d�
|�g}t|�fdd�|��D��jg�}�j
r�|���j
�f7}|S)Nrrr0)z-Az--appz-bz--brokerz--result-backendz--loaderz--configz	--workdirz-Cz
--no-colorz-qz--quietcs g|]\}}t|��|���qSr)r/rc)r6r-r.�rFrrrI�s�z&Node._prepare_argv.<locals>.<listcomp>)rcr_rS�indexrB�copyr:�insertr/�popr�tupler`rM)rFr_r'rBr-r.rerryrrd�s(


����zNode._prepare_argvcCs
|�d�S�Nr)�sendryrrr�alive�sz
Node.alivec
Csl|j}|r^zt�||�Wn>tyX}z&|jtjkr8�t||�WYd}~dSd}~00dSt||�dS)NFT)�pidrr�kill�OSError�errnoZESRCH�
maybe_call)rF�sigZon_errorr��excrrrr��s
z	Node.sendcKs|j|jf|j|d�|��S)N)rs�env)�	_waitexecrero)rFr�r;rrr�start�s���z
Node.startc	CsB|�||�}t||d�|�|d�t||d�}|j|��||d�S)Nr)�argstrr�)r�)�on_signalled�
on_failure)�prepare_argvr�rr�handle_process_exit�wait)	rFrersr��on_spawnr�r�r��piperrrr��s�zNode._waitexeccCs4|dkrt|||�|S|dkr0t|||�|Sr)r�)rF�retcoder�r�rrrr��szNode.handle_process_exitcCs(d�|gt|��}tjt|�td�S)Nr)�posix)r�list�shlexrSrr
)rFrersrrrrr��szNode.prepare_argvc	Gs>|D](}z|j|WSty*Yq0qt|d��dSr)rBrp)rFrxr-rrr�getopt�szNode.getoptcCsdt|�j�d|j�d�S)N�<z: �>)�typer[rryrrr�__repr__�sz
Node.__repr__cCs|�|�dd��S)Nrhri�rcr�ryrrr�pidfile�szNode.pidfilecCs|�|�dd��S)Nrjrkr�ryrrr�logfile�szNode.logfilecCs8|jdur|jSzt|j���WSty2Yn0dSr?)rfrr�Zread_pid�
ValueErrorryrrrr��s
zNode.pidcCs
||_dSr?)rf)rFr.rrrr�scCs
|jdS)Nrl�rBryrrrroszNode.executablecCs|jf|jSr?)roreryrrr�argv_with_executableszNode.argv_with_executablecKs||t|�d�S)Nr�)r<)�clsrr;rrr�from_kwargsszNode.from_kwargs)NNNN)N)N)NN)r[r\r]�__doc__rGrarmrbrdr�r�r�rnror�r�r�r�r�r	r�r��propertyr��setterr��classmethodr�rrrrrzs>�


�







rcOs|dur||i|��dSr?r)Zfunrr;rrrr�sr�c@sLeZdZeZddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	ddd�Z
dS)�MultiParser�
celery workerr>rcCs"||_||_||_||_||_dSr?)r_rMrr�range_prefix)rFr_rMrrr�rrrrG s
zMultiParser.__init__cs��j}t�j��t|�dk}�j���d�j����d�j����d��dt���}��d��pbd���d�j	�pt|��d	vr�dn����d
d�p��j
}|r�z��|�|}�Wnty�Yn0��
�|����|��������fdd�|D�S)
Nr0z--cmdz--appendz
--hostnamergz--prefixr>z--suffix)z""z''z--range-prefixc
3s$|]}���|������VqdSr?)�_node_from_options)r6r�rMr_rB�prrFrrr�	<genexpr>=s��z$MultiParser.parse.<locals>.<genexpr>)rC�dictrBr3rr}r_rMr
rr��_get_rangesr��_update_ns_opts�_update_ns_ranges)rFr��names�rangesr r�rr�rrP)s*
�zMultiParser.parsecCs>t|||�\}}	}
|	|jvr |	n|}t|	|||�||�|j�Sr?)r#rErrXrD)rFr�rrrr_rMrB�	namespacer!r1rrrr�Cs
�zMultiParser._node_from_optionscCs$t|d�}dd�td|d�D�S)NrcSsg|]}t|��qSr��str�r6�nrrrrILrAz+MultiParser._get_ranges.<locals>.<listcomp>r0)�int�range)rFr�Z	noderangerrrr�JszMultiParser._get_rangesc	Cs�t|j���D]l\}}|��rt|�d}|dkr@td|����z|j||�|�Wqtyxtd|����Yq0qdS)Nr0rzIndexes start at 1 got: zNo node at index )r�rEr:�isdigitr�rp�update�
IndexError)rFr�r��ns_name�ns_optsZns_indexrrrr�NszMultiParser._update_ns_optscCs^t|j���D]J\}}d|vs*|rd|vr|�||�D]}|j|�|�q6|j�|�qdS)N�,r2)r�rEr:�_parse_ns_ranger�r})rFr�r�r�r�Zsubnsrrrr�[s
zMultiParser._update_ns_rangesFcCsrg}d|vr|�d�p|gD]P}|rbd|vrb|�d�\}}|�dd�tt|�t|�d�D��q|�|�q|S)Nr�r2css|]}t|�VqdSr?r�r�rrrr�gsz.MultiParser._parse_ns_range.<locals>.<genexpr>r0)rS�extendr�r�rM)rFrVr��ret�spacer��stoprrrr�bs
�
zMultiParser._parse_ns_rangeN)r�r>r>r>r)F)r[r\r]rrGrPr�r�r�r�r�rrrrr�s�
	
r�c@s�eZdZdZd"dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
jfdd�Zdde
jfdd�Z
dde
jfdd�Zdde
jfdd�Ze
jdfdd�Zdd�Zd#dd�Zdd�Zed d!��ZdS)$rzRepresent a cluster of workers.NcCsx||_|ptd�|_||_||_||_||_||_||_|	|_	|
|_
||_||_|
|_
||_||_||_||_||_dS)Nr^)�nodesrr_r��on_stopping_preamble�on_send_signal�on_still_waiting_for�on_still_waiting_progress�on_still_waiting_end�
on_node_start�on_node_restart�on_node_shutdown_ok�on_node_status�on_node_signal�on_node_signal_dead�on_node_down�on_child_spawn�on_child_signalled�on_child_failure)rFr�r_r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrGrs$zCluster.__init__cs�fdd��D�S)Ncsg|]}��|��qSr)�
start_node)r6�noderyrrrI�rAz!Cluster.start.<locals>.<listcomp>rryrryrr��sz
Cluster.startcCs(t|j|�|�|�}t|j||�|Sr?)r�r��_start_noder�)rFr�r�rrrr��s
zCluster.start_nodecCs|j|j|j|j|jd�S)N)r�r�r�)r�r�r�r�r�)rFr�rrrr��s�zCluster._start_nodecCs8|j|jd�D]$}t|j|t|��|�||j�qdS)N��on_down)�getpidsr�r�r�rr�r�)rFr�r�rrr�send_all�szCluster.send_allcCs|�tj�Sr?)r��signal�SIGKILLryrrrr��szCluster.killcs&g���fdd�}�jd||d��S)Ncs2t�j|���|�}t�j||���|�dSr?)r�r�r�r�rM)r��retval�ZretvalsrFrr�restart_on_down�s
z(Cluster.restart.<locals>.restart_on_downrJ��retryr�r���_stop_nodes)rFr�r�rr�r�restart�szCluster.restartcCs|j|||d�S�Nr�r��rFr��callbackr�rrrr��szCluster.stoprJcCs|j|||d�Sr�r�r�rrr�stopwait�szCluster.stopwaitcCsJ|dur|n|j}t|j|d��}|rF|j|||d�D]}t||�q6dS)Nr�)r�r�)r�r�r��shutdown_nodesr�)rFr�r�r�r�r�rrrr��s
zCluster._stop_nodesccst|�}t|j|�t�}|D]4}t|j|t|��|�||j�s|�|�|Vq||8}|r�t|j|�d}|r�t�}|D]L}|d7}t|j	|�|�
�s~t|j|�|�|�|Vt|j|�q�q~||8}|rp|t|�spt
t|��qpt|j�dS)Nrr0)�setr�r�r�rr�r��addr�r�r�r�r3r�floatr�)rFr�r�r��P�	to_remover�Zitsrrrr��s6

zCluster.shutdown_nodescCs(|D]}|j|kr|Sqt|��dSr?)rrp)rFrr�rrr�find�s

zCluster.findccs&|D]}|jr|Vqt||�qdSr?)r�r�)rFr�r�rrrr��szCluster.getpidscCs(djt|�tdd�|D��t|�jd�S)Nz<{name}({0}): {1}>cSsg|]
}|j�qSr�rr�rrrrI�rAz$Cluster.__repr__.<locals>.<listcomp>r�)r4r3rr�r[ryrrrr��s�zCluster.__repr__cCs|jSr?)r�ryrrr�data�szCluster.data)NNNNNNNNNNNNNNNNN)N)r[r\r]r�rGr�r�r�r�r�r��SIGTERMr�r�r�r�r�r�r�r�r�r�rrrrrosB�
$
r)+r�r�rrr�r�rn�collectionsrrr�	functoolsr�
subprocessr�timerZkombu.utils.encodingrZkombu.utils.objectsr	Zcelery.platformsr
rrZcelery.utils.nodenamesr
rrrZcelery.utils.safereprr�__all__rrr#r)r/r<r=rr�r�rrrrr�<module>s64R