
    {kf8                     B   d Z ddlZddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
 ddl	mZ ddl	mZ dd	lmZmZ dd
lmZmZmZ ddlmZmZ ddlmZ ddlmZ ddlmZ ddlmZm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& 	 ddl'Z'n# e($ r dZ'Y nw xY wdZ)dZ*dZ+dZ, G d d          Z-dS )a  WorkController can be used to instantiate in-process workers.

The command-line interface for the worker is in :mod:`celery.bin.worker`,
while the worker program is in :mod:`celery.apps.worker`.

The worker program is responsible for adding signal handlers,
setting up logging, etc.  This is a bare-bones worker without
global side-effects (i.e., except for the global state stored in
:mod:`celery.worker.state`).

The worker consists of several components, all managed by bootsteps
(mod:`celery.bootsteps`).
    N)datetimetimezone)	cpu_count)detect_environment)	bootsteps)concurrency)signals)RUN	TERMINATE)ImproperlyConfiguredTaskRevokedErrorWorkerTerminate)
EX_FAILUREcreate_pidlock)reload_from_cwd)mlevel)worker_logger)default_nodenameworker_direct)str_to_list)default_socket_timeout   state)WorkControllerg      @z
Trying to select queue subset of {0!r}, but queue {1} isn't
defined in the `task_queues` setting.

If you want to automatically declare unknown queues you can
enable the `task_create_missing_queues` setting.
ze
Trying to deselect queue subset of {0!r}, but queue {1} isn't
defined in the `task_queues` setting.
c                   b   e Zd ZdZdZdZdZdZdZdZ	 G d de
j                  Zd(dZ	 	 d)dZd Zd Zd	 Zd
 Zd Zd Zd Zd*dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd+dZd,dZ d-dZ!d.dZ"d*dZ#d+dZ$d  Z%d! Z&d" Z'd# Z(d$ Z)e*d%             Z+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/d'Z,dS )0r   zUnmanaged worker instance.Nc                       e Zd ZdZdZh dZdS )WorkController.BlueprintzWorker bootstep blueprint.Worker>   celery.worker.components:Hubcelery.worker.components:Beatcelery.worker.components:Poolcelery.worker.components:Timer celery.worker.components:StateDB!celery.worker.components:Consumer'celery.worker.autoscale:WorkerComponentN)__name__
__module____qualname____doc__namedefault_steps     T/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/celery/worker/worker.py	Blueprintr   K   s*        ((
 
 
r.   r0   c           	      J   |p| j         | _         t          |          | _        t          j        t
          j                  | _        | j         j        	                                  | j
        di |  | j        di |  | j        di |  | j        di  | j        di | d S )Nr-   )appr   hostnamer   nowr   utcstartup_timeloaderinit_workeron_before_initsetup_defaultson_after_initsetup_instanceprepare_args)selfr2   r3   kwargss       r/   __init__zWorkController.__init__Y   s    ?$((22$L66##%%%%%f%%%%%f%%%$$V$$$::/d/99&99:::::r.   c                    || _         |                     ||           |                     t          |                     | j        s,	 t                      | _        n# t          $ r
 d| _        Y nw xY wt          | j                  | _        |p| j	        | _
        | j                                        | _        ||                                 n|| _        || _        t"          j                            |            t)          j        | j                  | _        g | _        |                                  |                     | j        j        d         | j        | j        | j                  | _         | j        j        | fi | d S )N   senderworker)stepson_starton_close
on_stopped)pidfilesetup_queuessetup_includesr   r   r   NotImplementedErrorr   loglevelon_consumer_readyready_callbackr2   connection_for_read	_conninfoshould_use_eventloopuse_eventloopoptionsr	   worker_initsend_concurrencyget_implementationpool_clsrF   on_init_blueprintr0   rG   rH   rI   	blueprintapply)r>   queuesrP   rJ   includerT   exclude_queuesr?   s           r/   r<   zWorkController.setup_instanced   s    &.111K00111  	%%#,;;  & % % %#$   % t}--,F0F 5577+8+@D%%''' 	    --- %7FF
   (.*]]	 ( 
 
 	T,,V,,,,,s   A A0/A0c                     d S Nr-   r>   s    r/   r[   z WorkController.on_init_blueprint       r.   c                     d S rb   r-   r>   r?   s     r/   r9   zWorkController.on_before_init   rd   r.   c                     d S rb   r-   rf   s     r/   r;   zWorkController.on_after_init   rd   r.   c                 J    | j         rt          | j                   | _        d S d S rb   )rJ   r   pidlockrc   s    r/   rG   zWorkController.on_start   s+    < 	8)$,77DLLL	8 	8r.   c                     d S rb   r-   )r>   consumers     r/   rO   z WorkController.on_consumer_ready   rd   r.   c                 B    | j         j                                         d S rb   )r2   r7   shutdown_workerrc   s    r/   rH   zWorkController.on_close   s    '')))))r.   c                     | j                                          | j                                         | j        r| j                                         d S d S rb   )timerstoprk   shutdownri   releaserc   s    r/   rI   zWorkController.on_stopped   sV    
   < 	#L  """""	# 	#r.   c                    t          |          }t          |          }	 | j        j        j                            |           nL# t
          $ r?}t          t                                          	                    ||                    d }~ww xY w	 | j        j        j        
                    |           nL# t
          $ r?}t          t                                          	                    ||                    d }~ww xY w| j        j        j        r8| j        j        j                            t          | j                             d S d S rb   )r   r2   amqpr^   selectKeyErrorr   SELECT_UNKNOWN_QUEUEstripformatdeselectDESELECT_UNKNOWN_QUEUEconfr   
select_addr3   )r>   r_   excludeexcs       r/   rK   zWorkController.setup_queues   s[   g&&g&&	CHM ''0000 	C 	C 	C&$**,,33GSAAC C C	C	EHM ))'2222 	E 	E 	E&&,,..55gsCCE E E	E 8=& 	JHM ++M$-,H,HIIIII	J 	Js/   $A 
B:B		B$B7 7
D :C;;D c                 B    t           j        j        j                  }|r |t          |          z  } fd|D              | _        d  j        j                                        D             }t          t          |          |z             j        j        _        d S )Nc                 N    g | ]!}j         j                            |          "S r-   )r2   r7   import_task_module).0mr>   s     r/   
<listcomp>z1WorkController.setup_includes.<locals>.<listcomp>   s+    EEEqTX_//22EEEr.   c                 &    h | ]}|j         j        S r-   )	__class__r(   )r   tasks     r/   	<setcomp>z0WorkController.setup_includes.<locals>.<setcomp>   s-     = = =  1 = = =r.   )tupler2   r|   r_   tasksvaluesset)r>   includesprevtask_moduless   `   r/   rL   zWorkController.setup_includes   s     TX]*++ 	FE(OO#DEEEEHEEEE= =$(HN$9$9$;$;= = = %c$ii,&> ? ?r.   c                     |S rb   r-   rf   s     r/   r=   zWorkController.prepare_args   s    r.   c                 F    t           j                            |            d S )NrC   )r	   worker_shutdownrW   rc   s    r/   _send_worker_shutdownz$WorkController._send_worker_shutdown   s"    $$D$11111r.   c                    	 | j                             |            d S # t          $ r |                                  Y d S t          $ r=}t          j        d|d           |                     t                     Y d }~d S d }~wt          $ r&}|                     |j
                   Y d }~d S d }~wt          $ r |                     t                     Y d S w xY w)NzUnrecoverable error: %rT)exc_info)exitcode)r\   startr   	terminate	Exceptionloggercriticalrp   r   
SystemExitcodeKeyboardInterrupt)r>   r   s     r/   r   zWorkController.start   s   
	+N  &&&&& 	 	 	NN 	+ 	+ 	+O5sTJJJJIIzI********* 	) 	) 	)IIsxI(((((((((  	+ 	+ 	+IIzI******	+s,    C	C2B  CB..(CCc                 D    | j                             | d|fd           d S )Nregister_with_event_loopzhub.register)argsdescription)r\   send_all)r>   hubs     r/   r   z'WorkController.register_with_event_loop   s8    ,C6& 	  	
 	
 	
 	
 	
r.   c                 8    |                      | j        |          S rb   )_quick_acquire_process_taskr>   reqs     r/   _process_task_semz WorkController._process_task_sem   s    ""4#5s;;;r.   c                     	 |                     | j                   dS # t          $ r+ 	 |                                  Y dS # t          $ r Y Y dS w xY ww xY w)z2Process task by sending it to the pool of workers.N)execute_using_poolpoolr   _quick_releaseAttributeErrorr   s     r/   r   zWorkController._process_task   s    	""49----- 	 	 	##%%%%%%!   	s&    
AA  
A
AAAc                 \    	 | j                                          d S # t          $ r Y d S w xY wrb   )rk   closer   rc   s    r/   signal_consumer_closez$WorkController.signal_consumer_close   sC    	M!!!!! 	 	 	DD	s    
++c                 l    t                      dk    o"| j        j        j        j        o| j        j         S )Ndefault)r   rR   	transport
implementsasynchronousr2   
IS_WINDOWSrc   s    r/   rS   z#WorkController.should_use_eventloop   s8    "$$	1 ((3@(H''	)r.   Fc                     ||| _         | j        j        t          k    r8|                                  |r| j        j        r|                     d           |                                  dS )z'Graceful shutdown of the worker server.NTwarm)	r   r\   r   r
   r   r   signal_safe	_shutdownr   )r>   in_sighandlerr   s      r/   rp   zWorkController.stop   sq    $DM>3&&&&(((  *DI$9 *D)))""$$$$$r.   c                     | j         j        t          k    r:|                                  |r| j        j        r|                     d           dS dS dS )z.Not so graceful shutdown of the worker server.Fr   N)r\   r   r   r   r   r   r   )r>   r   s     r/   r   zWorkController.terminate   sd    >9,,&&(((  +DI$9 +E***** -,+ +r.   Tc                     | j         et          t                    5  | j                             | |            | j                                          d d d            d S # 1 swxY w Y   d S d S )N)r   )r\   r   SHUTDOWN_SOCKET_TIMEOUTrp   join)r>   r   s     r/   r   zWorkController._shutdown  s     >%'(?@@ & &##DH#===##%%%& & & & & & & & & & & & & & & & & & &%s   7A  A$'A$c                    t          |                     |||                     | j        r2| j                                         | j                                         	 | j                                         d S # t          $ r Y d S w xY w)N)force_reloadreloader)list_reload_modulesrk   update_strategiesreset_rate_limitsr   restartrM   )r>   modulesreloadr   s       r/   r   zWorkController.reload  s    T!!&8 " = = 	> 	> 	> = 	.M++---M++---	I" 	 	 	DD	s    A; ;
B	B	c                 h      fdt          | j        j        j        n|pd          D             S )Nc              3   4   K   | ]} j         |fi V  d S rb   )_maybe_reload_module)r   r   r?   r>   s     r/   	<genexpr>z1WorkController._reload_modules.<locals>.<genexpr>  sL       
 
 &D%a22622
 
 
 
 
 
r.   r-   )r   r2   r7   r   )r>   r   r?   s   ` `r/   r   zWorkController._reload_modules  s[    
 
 
 
 
#O 5529-RB B
 
 
 	
r.   c                     |t           j        vr4t          j        d|           | j        j                            |          S |r5t          j        d|           t          t           j        |         |          S d S )Nzimporting module %szreloading module %s)sysr   r   debugr2   r7   import_from_cwdr   )r>   moduler   r   s       r/   r   z#WorkController._maybe_reload_module  sy    $$L.7778?226::: 	BL.777"3;v#6AAA	B 	Br.   c                     t          j        t          j                  | j        z
  }| j        j        t          j                    t          | j
        j                  t          |                                          dS )N)totalpidclockuptime)r   r4   r   r5   r6   r   total_countosgetpidstrr2   r   roundtotal_seconds)r>   r   s     r/   infozWorkController.info'  sa    hl++d.??/y{{TX^,, 4 4 6 6779 9 	9r.   c                 n   t           t          d          t          j        t           j                  }i 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 )Nz%rusage not supported by this platformutimestimemaxrssixrssidrssisrssminfltmajfltnswapinblockoublockmsgsndmsgrcvnsignalsnvcswnivcsw)resourcerM   	getrusageRUSAGE_SELFru_utimeru_stime	ru_maxrssru_ixrssru_idrssru_isrss	ru_minflt	ru_majfltru_nswap
ru_inblock
ru_oublock	ru_msgsnd	ru_msgrcvru_nsignalsru_nvcsw	ru_nivcsw)r>   ss     r/   rusagezWorkController.rusage.  s   %&MNNNx344
QZ
QZ
 ak
 QZ	

 QZ
 QZ
 ak
 ak
 QZ
 q|
 q|
 ak
 ak
 
 QZ
  ak!
 	
r.   c                 R   |                                  }|                    | j                             |                      |                    | j        j                             | j                             	 |                                 |d<   n# t
          $ r d|d<   Y nw xY w|S )Nr  zN/A)r   updater\   rk   r  rM   )r>   r   s     r/   statszWorkController.statsE  s    yy{{DN''--...DM+00??@@@	#![[]]DNN" 	# 	# 	#"DNNN	#s   :B B$#B$c                 p    d                     | | j        r| j                                        nd          S )z``repr(worker)``.z#<Worker: {self.hostname} ({state})>INIT)r>   r   )ry   r\   human_staterc   s    r/   __repr__zWorkController.__repr__O  s?    4;;26.L$.,,...f < 
 
 	
r.   c                     | j         S )z#``str(worker) == worker.hostname``.)r3   rc   s    r/   __str__zWorkController.__str__V  s
    }r.   c                     t           S rb   r   rc   s    r/   r   zWorkController.stateZ  s    r.   WARNc                    | j         j        }|| _        || _         |d|          | _         |d|          | _         |d||          | _         |d|          | _         |d|          | _         |d|          | _	        |p|| _
         |d|	          | _         |d|
          | _         |d	|          | _         |d
||          | _         |d|          | _         |d||          | _         |d||          | _         |d||          | _         |d|          | _         |d|          | _        t+           |d|                    | _         |d|          | _         |d|          | _        d S )Nworker_concurrencyworker_send_task_eventsworker_poolworker_consumerworker_timerworker_timer_precisionworker_autoscalerworker_pool_putlocksworker_pool_restartsworker_state_dbbeat_schedule_filenamebeat_schedulertask_time_limittask_soft_time_limitworker_max_tasks_per_childworker_max_memory_per_childworker_prefetch_multiplierworker_disable_rate_limitsworker_lost_wait)r2   eitherrN   logfiler   task_eventsrZ   consumer_cls	timer_clstimer_precisionoptimizationautoscaler_clspool_putlockspool_restartsstatedbschedule_filename	scheduler
time_limitsoft_time_limitmax_tasks_per_childmax_memory_per_childintprefetch_multiplierdisable_rate_limitsr'  )r>   r   rN   r)  r*  r   r+  r,  r-  r/  r0  r1  r.  Or2  r5  r6  r4  rZ   state_dbr!  r"  scheduler_clsr3  r7  r:  r;  r'  r8  _kwr(  s                                  r/   r:   zWorkController.setup_defaults^  s   *  !6"6DD!6";[II}dH=="F#4lCC	::%v$o 
  
 )-A$f%8.II#V$:MJJ#V$:MJJv/(CC!'$&7"
 "
   0)]KK &z?< <%v"O5I 
  
 $*6(*=$
 $
  %+F)+?%
 %
! $'vv(*=(
 (
 $ $  $*6(*=$
 $
  !''9;K L Lr.   )NN)NNNNNNrb   )FN)F)T)NFN)Nr  NNNNNNNNNNNNNNNNNNNNNNNNNN)-r'   r(   r)   r*   r2   ri   r\   r   	semaphorer   r   r0   r@   r<   r[   r9   r;   rG   rO   rH   rI   rK   rL   r=   r   r   r   r   r   r   rS   rp   r   r   r   r   r   r   r  r  r  r  propertyr   r:   r-   r.   r/   r   r   >   s       $$
CGIDI H
 
 
 
 
I' 
 
 
	; 	; 	; 	; HLHL&- &- &- &-P      8 8 8  * * *# # #J J J J 
@ 
@ 
@  2 2 2+ + +
 
 
< < <    ) ) )
% % % %+ + + +& & & &
 
 
 

 
 
 
B B B B9 9 9
 
 
.  
 
 
     X IMAE7;&*%)%),0#"&'+!% $ $'+,0%))-+/EI(,,0);M ;M ;M ;M ;M ;Mr.   r   ).r*   r   r   r   r   billiardr   kombu.utils.compatr   celeryr   r   rX   r	   celery.bootstepsr
   r   celery.exceptionsr   r   r   celery.platformsr   r   celery.utils.importsr   celery.utils.logr   r   r   celery.utils.nodenamesr   r   celery.utils.textr   celery.utils.threadsr    r   r   ImportError__all__r   rw   r{   r   r-   r.   r/   <module>rP     s     
			 



 ' ' ' ' ' ' ' '       1 1 1 1 1 1       . . . . . .       + + + + + + + + U U U U U U U U U U 7 7 7 7 7 7 7 7 0 0 0 0 0 0 # # # # # # 4 4 4 4 4 4 B B B B B B B B ) ) ) ) ) ) 7 7 7 7 7 7      OOOO   HHH     [M [M [M [M [M [M [M [M [M [Ms   8A= =BB