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: //usr/local/lib/python3.9/site-packages/celery/bin/__pycache__/multi.cpython-39.pyc
a

X>h<�@sdZddlZddlZddlZddlmZddlZddlmZddl	m
Z
ddlmZm
Z
mZddlmZmZddlmZmZmZdd	lmZdd
lmZdZdZd
d�Zdd�Zdd�Zdd�ZGdd�d�Z Gdd�de �Z!ej"eddd�d�ej#edd����Z$dS)a�Start multiple worker instances from the command-line.

.. program:: celery multi

Examples
========

.. code-block:: console

    $ # Single worker with explicit name and events enabled.
    $ celery multi start Leslie -E

    $ # Pidfiles and logfiles are stored in the current directory
    $ # by default.  Use --pidfile and --logfile argument to change
    $ # this.  The abbreviation %n will be expanded to the current
    $ # node name.
    $ celery multi start Leslie -E --pidfile=/var/run/celery/%n.pid
                                   --logfile=/var/log/celery/%n%I.log


    $ # You need to add the same arguments when you restart,
    $ # as these aren't persisted anywhere.
    $ celery multi restart Leslie -E --pidfile=/var/run/celery/%n.pid
                                     --logfile=/var/log/celery/%n%I.log

    $ # To stop the node, you need to specify the same pidfile.
    $ celery multi stop Leslie --pidfile=/var/run/celery/%n.pid

    $ # 3 workers, with 3 processes each
    $ celery multi start 3 -c 3
    celery worker -n celery1@myhost -c 3
    celery worker -n celery2@myhost -c 3
    celery worker -n celery3@myhost -c 3

    $ # override name prefix when using range
    $ celery multi start 3 --range-prefix=worker -c 3
    celery worker -n worker1@myhost -c 3
    celery worker -n worker2@myhost -c 3
    celery worker -n worker3@myhost -c 3

    $ # start 3 named workers
    $ celery multi start image video data -c 3
    celery worker -n image@myhost -c 3
    celery worker -n video@myhost -c 3
    celery worker -n data@myhost -c 3

    $ # specify custom hostname
    $ celery multi start 2 --hostname=worker.example.com -c 3
    celery worker -n [email protected] -c 3
    celery worker -n [email protected] -c 3

    $ # specify fully qualified nodenames
    $ celery multi start [email protected] [email protected] -c 3

    $ # fully qualified nodenames but using the current hostname
    $ celery multi start foo@%h bar@%h

    $ # Advanced example starting 10 workers in the background:
    $ #   * Three of the workers processes the images and video queue
    $ #   * Two of the workers processes the data queue with loglevel DEBUG
    $ #   * the rest processes the default' queue.
    $ celery multi start 10 -l INFO -Q:1-3 images,video -Q:4,5 data
        -Q default -L:4,5 DEBUG

    $ # You can show the commands necessary to start the workers with
    $ # the 'show' command:
    $ celery multi show 10 -l INFO -Q:1-3 images,video -Q:4,5 data
        -Q default -L:4,5 DEBUG

    $ # Additional options are added to each celery worker's command,
    $ # but you can also modify the options for ranges of, or specific workers

    $ # 3 workers: Two with 3 processes, and one with 10 processes.
    $ celery multi start 3 -c 3 -c:1 10
    celery worker -n celery1@myhost -c 10
    celery worker -n celery2@myhost -c 3
    celery worker -n celery3@myhost -c 3

    $ # can also specify options for named workers
    $ celery multi start image video data -c 3 -c:image 10
    celery worker -n image@myhost -c 10
    celery worker -n video@myhost -c 3
    celery worker -n data@myhost -c 3

    $ # ranges and lists of workers in options is also allowed:
    $ # (-c:1-3 can also be written as -c:1,2,3)
    $ celery multi start 5 -c 3  -c:1-3 10
    celery worker -n celery1@myhost -c 10
    celery worker -n celery2@myhost -c 10
    celery worker -n celery3@myhost -c 10
    celery worker -n celery4@myhost -c 3
    celery worker -n celery5@myhost -c 3

    $ # lists also works with named workers
    $ celery multi start foo bar baz xuzzy -c 3 -c:foo,bar,baz 10
    celery worker -n foo@myhost -c 10
    celery worker -n bar@myhost -c 10
    celery worker -n baz@myhost -c 10
    celery worker -n xuzzy@myhost -c 3
�N��wraps)�cached_property)�VERSION_BANNER)�Cluster�MultiParser�NamespacedOptionParser)�
CeleryCommand�handle_preload_options)�
EX_FAILURE�EX_OK�signals)�term)�	pluralize)�	MultiToola�usage: {prog_name} start <node1 node2 nodeN|range> [worker options]
       {prog_name} stop <n1 n2 nN|range> [-SIG (default: -TERM)]
       {prog_name} restart <n1 n2 nN|range> [-SIG] [worker options]
       {prog_name} kill <n1 n2 nN|range>

       {prog_name} show <n1 n2 nN|range> [worker options]
       {prog_name} get hostname <n1 n2 nN|range> [-qv] [worker options]
       {prog_name} names <n1 n2 nN|range>
       {prog_name} expand template <n1 n2 nN|range>
       {prog_name} help

additional options (must appear after command name):

    * --nosplash:   Don't display program info.
    * --quiet:      Don't show as much output.
    * --verbose:    Show more output.
    * --no-color:   Don't display colors.
cCst�t��tj��dS�N)�sys�exitr�execute_from_commandline�argv�rr�:/usr/local/lib/python3.9/site-packages/celery/bin/multi.py�main�srcst���fdd��}|S)Ncs|���|g|�Ri|��Sr)�splash)�self�args�kwargs��funrr�_inner�szsplash.<locals>._innerr�rrrrrr�srcst���fdd��}|S)Ncs�||�|�fi|��Sr)�cluster_from_argv)rrrrrrr�szusing_cluster.<locals>._innerrr rrr�
using_cluster�sr"cst���fdd��}|S)Ncs,|�|�\}}|�|�}�|||fi|��Sr)�_cluster_from_argv�_find_sig_argument)rrr�p�cluster�sigrrrr�s
z%using_cluster_and_sig.<locals>._innerrr rrr�using_cluster_and_sig�sr(c@s�eZdZdZdeiZdZddd�Zdd	d
�Zddd�Z	dd
d�Z
ddd�Zd dd�Zd!dd�Z
edd��Zdd�Zedd��ZdS)"�
TermLoggerzcelery multi v{version}�versionrFcKs4|ptj|_|ptj|_||_||_||_||_dSr)r�stdout�stderr�nosplash�quiet�verbose�no_color)rr+r,r-r.r/r0rrrr�setup_terminal�szTermLogger.setup_terminalTNcCs|j|||d�tS)N)�newline�file)�sayr�r�mr2r3rrr�ok�sz
TermLogger.okcCs t||p|j|rdndd�dS)N�
�)r3�end)�printr+r5rrrr4�szTermLogger.saycCs|�|||p|j�Sr)r4r,r5rrr�carp�szTermLogger.carpcCs|r|�|�|��tSr)r<�usager)r�msgrrr�error�s
zTermLogger.errorcCs|jr|j||d�dS�N�r2)r/�note�rr>r2rrr�info�szTermLogger.infocCs|js|jt|�|d�dSr@)r.r4�strrCrrrrB�szTermLogger.notecCs|�tj|jd��dS)N)�	prog_name)r4�USAGE�formatrF�rrrrr=�szTermLogger.usagecCs,|js(|�|j�|jjfi|j����dSr)r-rB�colored�cyan�splash_textrH�splash_contextrIrrrr�s
�zTermLogger.splashcCstj|jd�S)N)�enabled)rrJr0rIrrrrJ�szTermLogger.colored)FFFF)TN)TN)TN)N)T)T)�__name__�
__module__�__qualname__rLrrM�retcoder1r7r4r<r?rDrBrr=rrJrrrrr)�s"�








r)c@s�eZdZdZeZeZgd�ZdPdd�ZdQdd�Z	dd	�Z
d
d�Zdd
�Ze
edd���Ze
edd���Ze
edd���ZeZe
edd���Zedd��Zdd�Zedd��Ze
edd���Zdd�Zd d!�Zejfd"d#�ZdRd$d%�ZdSd&d'�ZdTd(d)�Z dUd*d+�Z!d,d-�Z"d.d/�Z#d0d1�Z$d2d3�Z%d4d5�Z&d6d7�Z'd8d9�Z(d:d;�Z)d<d=�Z*d>d?�Z+d@dA�Z,dBdC�Z-dDdE�Z.dFdG�Z/dHdI�Z0e1dJdK��Z2e1dLdM��Z3e1dNdO��Z4dS)VrzThe ``celery multi`` program.))z
--nosplashr-)z--quietr.)z-qr.)z	--verboser/)z
--no-colorr0NcKsj||_||_|j|p||fi|��|j|_d|_|j|j|j|j	|j	|j
|j|j|j
|j|jd�|_dS)Nzcelery multi)�start�show�stop�stopwait�stop_verify�restart�kill�names�expand�get�help)�env�cmdr1r+�fhrFrSrTrUrVrXrYrZr[r\r]�commands)rr^r_r`r+r,rrrr�__init__�s"�zMultiTool.__init__cCs\|�|�}|dur|n|j|_tj�|�d��|_|�|�sD|��S|�	|d|dd��S)Nr�)
�_handle_reserved_optionsr_�os�path�basename�poprF�validate_argumentsr?�call_command)rrr_rrrrs

z"MultiTool.execute_from_commandlinecCs|o|dddkS)Nr�-r�rrrrrriszMultiTool.validate_argumentscCs<z|j||�ptWSty6|�d|���YS0dS)NzInvalid command: )rar�KeyErrorr?)r�commandrrrrrjszMultiTool.call_commandc
Cs@t|�}|jD],\}}||vrt||t|�|�|����q|Sr)�list�reserved_options�setattr�boolrh�index)rr�arg�attrrrrrds
z"MultiTool._handle_reserved_optionscCs|�d�tt|����S)Nz> Starting nodes...)rB�int�anyrS�rr&rrrrS!s
zMultiTool.startcKs|jfd|i|��S�Nr')rU�rr&r'rrrrrU'szMultiTool.stopcKs|jfd|i|��Sry)rVrzrrrrV,szMultiTool.stopwaitcKstt|jfd|i|����Sry)rvrwrXrzrrrrX2szMultiTool.restartcCs|�d�dd�|D���dS)Nr8css|]}|jVqdSr)�name)�.0�nrrr�	<genexpr>9�z"MultiTool.names.<locals>.<genexpr>)r4�joinrxrrrrZ7szMultiTool.namescGsBz|�|��|�}Wnty*tYS0|�d�|j��SdS)N� )r!�findrmrr7r�r)r�wantedr�noderrrr\;s

z
MultiTool.getcCs|�d�dd�|D���S)Nr8css|]}d�|j�VqdS)r�N)r�Zargv_with_executable�r|r�rrrr~Es�z!MultiTool.show.<locals>.<genexpr>)r7r�rxrrrrTCs�zMultiTool.showcCs|��Sr)rYrxrrrrYJszMultiTool.killcs$|�d��fdd�|�|�D���S)Nr8c3s|]}|���VqdSr)Zexpanderr���templaterrr~Ps�z#MultiTool.expand.<locals>.<genexpr>)r7r�r!)rr�rrr�rr[Os�zMultiTool.expandcGs|�t�dSr)r4�__doc__rlrrrr]UszMultiTool.helpc
Cs�|jt|j�d�}t|�D]~}t|�dkr^|ddkr^zt|d�WSty\Yn0|ddkrzt�|dd��WStt	fy�Yq0q|S)N�rrkrc)
r�len�values�reversedrv�
ValueErrorr
�signum�AttributeError�	TypeError)rr%�defaultrrtrrrr$XszMultiTool._find_sig_argumentcCs:|dur|n|j}|�|�}|��||j|d��|�fS�N)r_)r_�OptionParser�parser)rrr_r%rrr�_nodes_from_argvgs
zMultiTool._nodes_from_argvcCs|j||d�\}}|Sr�)r#)rrr_�_r&rrrr!mszMultiTool.cluster_from_argvcCs(|j||d�\}}||jt|�|d�fSr�)r�rro)rrr_r%�nodesrrrr#qszMultiTool._cluster_from_argvcCsLt|||j|j|j|j|j|j|j|j|j	|j
|j|j|j
|j|j|jd�S)N)r_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_dead�on_node_signal�on_node_down�on_child_spawn�on_child_signalled�on_child_failure)rr^r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)rr�r_rrrrus(�zMultiTool.ClustercCs|�|j�d��dS)Nz> Stopping nodes...)rBrJ�blue�rr�rrrr��szMultiTool.on_stopping_preamblecCs|�d�||��dS)Nz	> {0.name}: {1} -> {0.pid}�rBrH�rr�r'rrrr��szMultiTool.on_send_signalcCsFt|�}|rB|j|j�d�|t|d�d�dd�|D����dd�dS)Nz> Waiting for {} {} -> {}...r�z, css|]}t|j�VqdSr)rE�pidr�rrrr~�rz1MultiTool.on_still_waiting_for.<locals>.<genexpr>FrA)r�rBrJr�rHrr�)rr�Znum_leftrrrr��s

���zMultiTool.on_still_waiting_forcCs|jddd�dS)N�.FrA�rBr�rrrr��sz#MultiTool.on_still_waiting_progresscCs|�d�dS)Nr9r�rIrrrr��szMultiTool.on_still_waiting_endcCs|�d�|��dS)Nz4Could not signal {0.name} ({0.pid}): No such processr��rr�rrrr��s
��zMultiTool.on_node_signal_deadcCs|jd|j�d�dd�dS)Nz	> �: FrA)rBr{r�rrrr��szMultiTool.on_node_startcCs$|j|j�d|j�d��dd�dS)Nz> Restarting node r�FrA)rBrJr�r{r�rrrr��s

��zMultiTool.on_node_restartcCs|�d|j�d|j���dS)Nz> r�)rBr{�DOWNr�rrrr��szMultiTool.on_node_downcCs|�d|j�d|j���dS)Nz
	> r�)rBr{�OKr�rrrr��szMultiTool.on_node_shutdown_okcCs|�|r|jp|j�dSr)rB�FAILEDr�)rr��retvalrrrr��szMultiTool.on_node_statuscCs|�dj||d��dS)Nz(Sending {sig} to node {0.name} ({0.pid}))r'r�r�rrrr��s�zMultiTool.on_node_signalcCs|�d|���dS)Nz  )rD)rr�Zargstrr^rrrr��szMultiTool.on_child_spawncCs|�d|���dS)Nz!* Child was terminated by signal r�)rr�r�rrrr��szMultiTool.on_child_signalledcCs|�d|���dS)Nz"* Child terminated with exit code r�)rr�rRrrrr��szMultiTool.on_child_failurecCst|j�d��S)Nr�)rErJ�greenrIrrrr��szMultiTool.OKcCst|j�d��S)Nr�)rErJ�redrIrrrr��szMultiTool.FAILEDcCst|j�d��S)Nr�)rErJ�magentarIrrrr��szMultiTool.DOWN)NNNNN)N)N)N)N)N)5rOrPrQr�rrr�rprbrrirjrdrr"rSr(rUrVrWrXrZr\rTrYr[r]�signal�SIGTERMr$r�r!r#rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�rrrrr�sx�







	

rT)Zallow_extra_argsZignore_unknown_options)�clsZcontext_settingscKsPt|jj|jjd�}tjdd�}||�d�d�|d|�d��}|�|�S)z Start multiple worker instances.)r.r0rcN�multi)r�objr.r0rrrsr)�ctxrr_rrrrr��s$r�)%r�rer�r�	functoolsrZclickZkombu.utils.objectsrZceleryrZcelery.apps.multirrrZcelery.bin.baser	r
Zcelery.platformsrrr
Zcelery.utilsrZcelery.utils.textr�__all__rGrrr"r(r)rrnZpass_contextr�rrrr�<module>s<d	
8n��