HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/celery/bin/__pycache__/multi.cpython-310.pyc
o

-we<�@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 celery1@worker.example.com -c 3
    celery worker -n celery2@worker.example.com -c 3

    $ # specify fully qualified nodenames
    $ celery multi start foo@worker.example.com bar@worker.example.com -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�I/home/arjun/projects/env/lib/python3.10/site-packages/celery/bin/multi.py�main�src�t���fdd��}|S)Ncs|���|g|�Ri|��Sr)�splash)�self�args�kwargs��funrr�_inner�szsplash.<locals>._innerr�rr rrrr�srcr)Ncs�||�|�fi|��Sr)�cluster_from_argv)rrrrrrr ��zusing_cluster.<locals>._innerrr!rrr�
using_cluster�sr$cr)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�eZdZdZdeiZdZ		ddd�Zdd	d
�Zddd�Z	dd
d�Z
ddd�Zddd�Zddd�Z
edd��Zdd�Zedd��ZdS)�
TermLoggerzcelery multi v{version}�versionrFcKs4|ptj|_|p
tj|_||_||_||_||_dSr)r�stdout�stderr�nosplash�quiet�verbose�no_color)rr-r.r/r0r1r2rrrr�setup_terminal�s
zTermLogger.setup_terminalTNcCs|j|||d�tS)N)�newline�file)�sayr�r�mr4r5rrr�ok�sz
TermLogger.okcCs t||p|j|r
dndd�dS)N�
�)r5�end)�printr-r7rrrr6�s zTermLogger.saycCs|�|||p|j�Sr)r6r.r7rrr�carp��zTermLogger.carpcCs|r|�|�|��tSr)r>�usager)r�msgrrr�error�s
zTermLogger.errorcCs|jr|j||d�dSdS�N�r4)r1�note�rrAr4rrr�info�s�zTermLogger.infocCs |js|jt|�|d�dSdSrC)r0r6�strrFrrrrE�s�zTermLogger.notecCs|�tj|jd��dS)N)�	prog_name)r6�USAGE�formatrI�rrrrr@�r#zTermLogger.usagecCs0|js|�|j�|jjdi|j����dSdS)Nr)r/rE�colored�cyan�splash_textrK�splash_contextrLrrrr�s


��zTermLogger.splashcCstj|jd�S)N)�enabled)rrMr2rLrrrrM��zTermLogger.colored)FFFF)TNr)T)�__name__�
__module__�__qualname__rOrrP�retcoder3r9r6r>rBrGrErr@rrMrrrrr+�s$
�







r+c@s�eZdZdZeZeZgd�Z		dPdd�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#�ZdQd$d%�ZdQd&d'�ZdQd(d)�Z dQd*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)RrzThe ``celery multi`` program.))z
--nosplashr/)z--quietr0)z-qr0)z	--verboser1)z
--no-colorr2Nc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�cmdr3r-�fhrIrWrXrYrZr\r]r^r_r`ra�commands)rrbrcrdr-r.rrrr�__init__�s"�zMultiTool.__init__cCs\|�|�}|dur|n|j|_tj�|�d��|_|�|�s"|��S|�	|d|dd��S)Nr�)
�_handle_reserved_optionsrc�os�path�basename�poprI�validate_argumentsrB�call_command)rrrcrrrrs

z"MultiTool.execute_from_commandlinecCs|o	|dddkS)Nr�-r�rrrrrrmr?zMultiTool.validate_argumentscCs8z
|j||�p	tWSty|�d|���YSw)NzInvalid command: )rer�KeyErrorrB)r�commandrrrrrns
�zMultiTool.call_commandc
Cs@t|�}|jD]\}}||vrt||t|�|�|����q|Sr)�list�reserved_options�setattr�boolrl�index)rr�arg�attrrrrrhs�z"MultiTool._handle_reserved_optionscCs|�d�tt|����S)Nz> Starting nodes...)rE�int�anyrW�rr(rrrrW!s
zMultiTool.startcK�|jdd|i|��S�Nr)r)rY�rr(r)rrrrrY'�zMultiTool.stopcKr}r~)rZrrrrrZ,r�zMultiTool.stopwaitcKstt|jdd|i|����Sr~)rzr{r\rrrrr\2szMultiTool.restartcCs|�d�dd�|D���dS)Nr:css�|]}|jVqdSr)�name)�.0�nrrr�	<genexpr>9s�z"MultiTool.names.<locals>.<genexpr>)r6�joinr|rrrr^7szMultiTool.namescGs>z
|�|��|�}WntytYSw|�d�|j��S)N� )r"�findrqrr9r�r)r�wantedr�noderrrr`;s�z
MultiTool.getcCs|�d�dd�|D���S)Nr:css�|]	}d�|j�VqdS)r�N)r��argv_with_executable�r�r�rrrr�Es
�
�
�z!MultiTool.show.<locals>.<genexpr>)r9r�r|rrrrXCs
�zMultiTool.showcCs|��Sr)r]r|rrrr]JszMultiTool.killcs$|�d��fdd�|�|�D���S)Nr:c3s�|]}|���VqdSr)�expanderr���templaterrr�Ps
��
�z#MultiTool.expand.<locals>.<genexpr>)r9r�r")rr�rrr�rr_Os
�zMultiTool.expandcGs|�t�dSr)r6�__doc__rprrrraU�zMultiTool.helpc
Cs�|jt|j�d�}t|�D]?}t|�dkr/|ddkr/z	t|d�WSty.Ynw|ddkrMzt�|dd��WStt	fyLYqwq|S)N�rrorg)
r�len�values�reversedrz�
ValueErrorr
�signum�AttributeError�	TypeError)rr'�defaultrrxrrrr&Xs ���zMultiTool._find_sig_argumentcCs:|dur|n|j}|�|�}|��||j|d��|�fS�N)rc)rc�OptionParser�parser)rrrcr'rrr�_nodes_from_argvgs
zMultiTool._nodes_from_argvcCs|j||d�\}}|Sr�)r%)rrrc�_r(rrrr"mszMultiTool.cluster_from_argvcCs(|j||d�\}}||jt|�|d�fSr�)r�rrs)rrrcr'�nodesrrrr%qszMultiTool._cluster_from_argvcCs�t|fid|�d|j�d|j�d|j�d|j�d|j�d|j�d|j�d	|j�d
|j	�d|j
�d|j�d
|j�d|j
�d|j�d|j�d|j��S)Nrcrb�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)rrbr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)rr�rcrrrrusJ��������	�
���
������zMultiTool.ClustercCs|�|j�d��dS)Nz> Stopping nodes...)rErM�blue�rr�rrrr���zMultiTool.on_stopping_preamblecCs|�d�||��dS)Nz	> {0.name}: {1} -> {0.pid}�rErK�rr�r)rrrr��r�zMultiTool.on_send_signalcCsJt|�}|r#|j|j�d�|t|d�d�dd�|D����dd�dSdS)Nz> Waiting for {} {} -> {}...r�z, css�|]}t|j�VqdSr)rH�pidr�rrrr��s�z1MultiTool.on_still_waiting_for.<locals>.<genexpr>FrD)r�rErMr�rKrr�)rr��num_leftrrrr��s

��
��zMultiTool.on_still_waiting_forcCs|jddd�dS)N�.FrD�rEr�rrrr��sz#MultiTool.on_still_waiting_progresscCs|�d�dS)Nr;r�rLrrrr��r�zMultiTool.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	> �: FrD)rEr�r�rrrr��szMultiTool.on_node_startcCs$|j|j�d|j�d��dd�dS)Nz> Restarting node r�FrD)rErMr�r�r�rrrr��s

�
�zMultiTool.on_node_restartcC�|�d|j�d|j���dS)Nz> r�)rEr��DOWNr�rrrr���zMultiTool.on_node_downcCr�)Nz
	> r�)rEr��OKr�rrrr��r�zMultiTool.on_node_shutdown_okcCs|�|r|jp	|j�dSr)rE�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_signalcC�|�d|���dS)Nz  )rG)rr��argstrrbrrrr��r?zMultiTool.on_child_spawncCr�)Nz!* Child was terminated by signal r�)rr�r�rrrr��r?zMultiTool.on_child_signalledcCr�)Nz"* Child terminated with exit code r�)rr�rVrrrr��r?zMultiTool.on_child_failurecC�t|j�d��S)Nr�)rHrM�greenrLrrrr��rRzMultiTool.OKcCr�)Nr�)rHrM�redrLrrrr��rRzMultiTool.FAILEDcCr�)Nr�)rHrM�magentarLrrrr��rRzMultiTool.DOWN)NNNNNr)5rSrTrUr�rrr�rtrfrrmrnrhrr$rWr*rYrZr[r\r^r`rXr]r_ra�signal�SIGTERMr&r�r"r%rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�rrrrr�sz
�






	

rT)�allow_extra_args�ignore_unknown_options)�cls�context_settingscKsPt|jj|jjd�}tjdd�}||�d�d�|d|�d��}|�|�S)z Start multiple worker instances.)r0r2rgN�multi)r�objr0r2rrrwr)�ctxrrcrrrrr��s$
r�)%r�rir�r�	functoolsr�click�kombu.utils.objectsr�celeryr�celery.apps.multirrr�celery.bin.baser	r
�celery.platformsrrr
�celery.utilsr�celery.utils.textr�__all__rJrrr$r*r+rrr�pass_contextr�rrrr�<module>s>d	
8n��