a
    xdL1                  %   @   st  d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZmZmZ ddlmZ ddlmZmZmZmZ dd	lmZ dd
lmZmZmZ eeZG dd deZG dd dejZ G dd deZ!G dd deZ"e Z#e  Z$e! Z%e" Z&ej'(dZ)dnddZ*ej+eddidej,ddeedee%dddej,dd edddd!d"ej,d#d$ee- d%d& dd'd(ej,d)d*d+eedd,dej,d-d.d/eed0dd1dej,d2e.d3d4d& edd5d6ej,d7d8e.d9d:d& ed;d<d6ej,d=d>d?e$ed;d@dAej,dBdCdDded;dEdFej,dGe/ed;dHdIej,dJe/ed;dKdIej,dLe.ed;dMdIej,dNe.ed;dOdIej,dPdQdedRdSej,dTdUe
edRdVej,dWdXe
edRdVej,dYdZe
edRdVej,d[ded\dSej,d]ded\dSej,d^ded\dSej,d_e.ed\dVej,d`e&ed\dVej,dadbe#eddcddej,dedfdgdhd& edcdiej,djedcdkej0edodldmZ1dS )pz/Program used to start a Celery worker instance.    N)	ParamType)StringParamType)concurrency)COMMA_SEPARATED_LIST	LOG_LEVELCeleryDaemonCommandCeleryOptionhandle_preload_options)SecurityError)
EX_FAILUREEX_OKdetachedmaybe_drop_privileges)
get_logger)default_nodenamehost_formatnode_formatc                   @   s   e Zd ZdZdZdd ZdS )
CeleryBeatzCelery Beat flag.Zbeatc                 C   s   |j jjr|r| d |S )NzR-B option does not work on Windows.  Please run celery beat as a separate service.)objappZ
IS_WINDOWSfailselfvalueparamctx r   I/var/www/html/Ranjet/env/lib/python3.9/site-packages/celery/bin/worker.pyconvert   s    
zCeleryBeat.convertN__name__
__module____qualname____doc__namer   r   r   r   r   r      s   r   c                       s0   e Zd ZdZdZ fddZ fddZ  ZS )WorkersPoolzWorkers pool option.poolc                    s   t  t  dS )z=Initialize the workers pool option with the relevant choices.N)super__init__r   Zget_available_pool_names)r   	__class__r   r   r(   )   s    zWorkersPool.__init__c                    sP   t  |||}|jjjj}|dkr4|r4t|}nt|}|sLt|}|S )Nprefork)r'   r   r   r   confworker_poolr   Zget_implementation)r   r   r   r   r-   r)   r   r   r   -   s    

zWorkersPool.convert)r    r!   r"   r#   r$   r(   r   __classcell__r   r   r)   r   r%   $   s   r%   c                   @   s   e Zd ZdZdZdd ZdS )HostnamezHostname option.hostnamec                 C   s   t t|S N)r   r   r   r   r   r   r   E   s    zHostname.convertNr   r   r   r   r   r/   @   s   r/   c                   @   s   e Zd ZdZdZdd ZdS )	AutoscalezAutoscaling parameter.z<min workers>, <max workers>c              	   C   s   | d}t|dkr,| dt| d t|dkrrzt|d df}W n$ typ   | d| d Y n0 zttttt|W S  ty   | d|	d d Y n0 d S )	N,   z9Expected two comma separated integers or one integer.Got z	 instead.   r   zExpected an integer. Got z*Expected two comma separated integers.Got )
splitlenr   int
ValueErrortuplereversedsortedmapjoinr   r   r   r   r   N   s     

zAutoscale.convertNr   r   r   r   r   r2   I   s   r2   
C_FAKEFORKFc              
   C   s   t rdn|}t||}t|||||||dd z2|
dur>|
} t| | g|  tW W  d   S  ty   |	du rddlm} |}	|	j	j
d||d tjd	d
| g| dd t Y W  d   S 0 W d   n1 s0    Y  dS )zDetach program by argv.r5   F)Zafter_forkersNr   )current_appERROR)r0   zCan't exec %r T)exc_info)r?   r   r   osexecvr   	Exceptionceleryr@   logZsetup_logging_subsystemloggercriticalr>   r   )pathargvlogfilepidfileuidgidumaskworkdirZfaker   
executabler0   r@   r   r   r   detachj   s*    
rT   Zallow_extra_argsT)clsZcontext_settingsz-nz
--hostnamezWorker Optionsz]Set custom hostname (e.g., 'w1@%%h').  Expands: %%h (hostname), %%n (name) and %%d, (domain).)defaultrU   type
help_grouphelp-D--detachz%Start worker as a background process.)rU   is_flagrV   rX   rY   z-Sz	--statedbc                 C   s   |p| j jjjS r1   )r   r   r,   Zworker_state_dbr   _r   r   r   r   <lambda>   s    r_   zPPath to the state database. The extension '.db' may be appended to the filename.)rU   rW   callbackrX   rY   z-lz
--loglevelWARNINGzLogging level.optimizationz-OrV   )rV   ZfairzApply optimization profile.z--prefetch-multiplierz<prefetch multiplier>c                 C   s   |p| j jjjS r1   )r   r   r,   Zworker_prefetch_multiplierr]   r   r   r   r_      s    z=Set custom prefetch multiplier valuefor this worker instance.)rW   metavarr`   rU   rX   rY   z-cz--concurrencyz<concurrency>c                 C   s   |p| j jjjS r1   )r   r   r,   Zworker_concurrencyr]   r   r   r   r_      s    zPool OptionszkNumber of child processes processing the queue.  The default is the number of CPUs availableon your system.z-Pz--poolr+   zPool implementation.)rV   rW   rU   rX   rY   z-Ez--task-eventsz--eventszdSend task-related events that can be captured by monitors like celery events, celerymon, and others.)r\   rU   rX   rY   z--time-limitz;Enables a hard time limit (in seconds int/float) for tasks.)rW   rU   rX   rY   z--soft-time-limitz;Enables a soft time limit (in seconds int/float) for tasks.z--max-tasks-per-childzfMaximum number of tasks a pool worker can execute before it's terminated and replaced by a new worker.z--max-memory-per-childa  Maximum amount of resident memory, in KiB, that may be consumed by a child process before it will be replaced by a new one.  If a single task causes a child process to exceed this limit, the task will be completed and the child process will be replaced afterwards.
Default: no limit.z--purgez	--discardzQueue Options)r\   rU   rX   z--queuesz-Q)rW   rU   rX   z--exclude-queuesz-Xz	--includez-Iz--without-gossipZFeaturesz--without-minglez--without-heartbeatz--heartbeat-intervalz--autoscalez-Bz--beatzEmbedded Beat Options)rW   rU   r\   rX   z-sz--schedule-filenamez
--schedulec                 C   s   |p| j jjjS r1   )r   r   r,   Zbeat_schedule_filenamer]   r   r   r   r_     s    )r`   rU   rX   z--scheduler)rU   rX   c
                 K   s|  z2| j j}| jrdz|j| jdd W n< ttfyb } z tjd| | dW Y d}~n
d}~0 0 |
ddrdd	gt	j
d
d  }d|v r|d d|v r|d tt	j||||||
dd|
dd||
dd|dW S t||d |jf ||||t||t|	|| j j| j jd|
}|  |jW S  tyv } z(| j |jd  | d
 W Y d}~n
d}~0 0 dS )a  Start worker instance.

    Examples
    --------
    $ celery --app=proj worker -l INFO
    $ celery -A proj worker -l INFO -Q hipri,lopri
    $ celery -A proj worker --concurrency=4
    $ celery -A proj worker --concurrency=1000 -P eventlet
    $ celery worker --autoscale=10,0

    worker)	namespacez?Unable to parse extra configuration from command line.
Reason: )r   NrT   Fz-mrG   r5   r[   rZ   rQ   rR   rS   )	rM   rN   rO   rP   rQ   rR   r   rS   r0   )rO   rP   )r0   pool_clsloglevelrM   rN   statedbno_colorquietr   )r   r   argsZconfig_from_cmdlineKeyErrorr9   clickZ
UsageErrorgetsysrL   removerT   rS   r   ZWorkerr   ri   rj   startexitcoder
   errorexit)r   r0   rf   r   rO   rP   rg   rM   rN   rh   kwargserL   rd   r   r   r   rd      s\     0




rd   )
NNNNNNFNNN)	NNNNNNNNN)2r#   rD   ro   rm   r   Zclick.typesr   rG   r   Zcelery.bin.baser   r   r   r   r	   Zcelery.exceptionsr
   Zcelery.platformsr   r   r   r   Zcelery.utils.logr   Zcelery.utils.nodenamesr   r   r   r    rI   r   ZChoicer%   r/   r2   ZCELERY_BEATZWORKERS_POOLHOSTNAMEZ	AUTOSCALEenvironrn   r?   rT   commandoptionPathr8   floatZpass_contextrd   r   r   r   r   <module>   s  	   

		
  