
    i8                     8   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'dZ)dZ*dZ+dZ, G d d      Z-y# e($ r dZ'Y w xY w)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                   ^   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,y)-r   zUnmanaged worker instance.Nc                       e Zd ZdZdZh dZy)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/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/celery/worker/worker.py	Blueprintr   K   s    (
r.   r0   c           	         |xs | j                   | _         t        |      | _        t        j                  t
        j                        | _        | j                   j                  j                           | j                  di |  | j                  di |  | j                  di |  | j                  di  | j                  di | y )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$LL6##%%f%%f%$V$:/d//9&9:r.   c                 :   || _         | j                  ||       | j                  t        |             | j                  s	 t               | _        t        | j                        | _        |xs | j                  | _
        | j                  j                         | _        || j                         n|| _        || _        t"        j$                  j'                  |        t)        j*                  | j,                        | _        g | _        | j1                          | j3                  | j                  j.                  d   | j4                  | j6                  | j8                        | _         | j:                  j<                  | fi | y # t        $ r d| _        Y Iw xY w)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   sX    &.1K01 %#,; 
 t}}-,F0F0F 557+8+@D%%' 	    - %77F
 ((..*]]]]	 ( 
 	T,V,7 ' %#$ %s   F FFc                      y Nr-   r>   s    r/   r[   z WorkController.on_init_blueprint       r.   c                      y rb   r-   r>   r?   s     r/   r9   zWorkController.on_before_init   rd   r.   c                      y rb   r-   rf   s     r/   r;   zWorkController.on_after_init   rd   r.   c                 R    | j                   rt        | j                         | _        y y rb   )rJ   r   pidlockrc   s    r/   rG   zWorkController.on_start   s    <<)$,,7DL r.   c                      y rb   r-   )r>   consumers     r/   rO   z WorkController.on_consumer_ready   rd   r.   c                 L    | j                   j                  j                          y rb   )r2   r7   shutdown_workerrc   s    r/   rH   zWorkController.on_close   s    '')r.   c                     | j                   j                          | j                  j                          | j                  r| j                  j                          y y rb   )timerstoprk   shutdownri   releaserc   s    r/   rI   zWorkController.on_stopped   s<    

 <<LL  " r.   c                    t        |      }t        |      }	 | j                  j                  j                  j	                  |       	 | j                  j                  j                  j                  |       | j                  j                  j                  rC| j                  j                  j                  j                  t        | j                               y y # t
        $ r2}t        t        j                         j                  ||            d }~ww xY w# t
        $ r2}t        t        j                         j                  ||            d }~ww xY w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HHMM  ''0	EHHMM  ))'2 88==&&HHMM  ++M$--,HI '  	C&$**,33GSAC C	C
  	E&&,,.55gsCE E	Es/   /C /D 	D$-DD	E"-EEc                    t        | j                  j                  j                        }|rA|t        |      z  }|D cg c]'  }| j                  j                  j                  |      ) c} || _        | j                  j                  j                         D ch c]  }|j                  j                   }}t        t        |      |z        | j                  j                  _        y c c}w c c}w rb   )tupler2   r|   r_   r7   import_task_moduletasksvalues	__class__r(   set)r>   includesprevmtasktask_moduless         r/   rL   zWorkController.setup_includes   s     TXX]]**+E(O#D<DEqTXX__//2E$(HHNN$9$9$;=  11 = = %c$i,&> ?	 F=s   ,C*C/c                     |S rb   r-   rf   s     r/   r=   zWorkController.prepare_args   s    r.   c                 D    t         j                  j                  |        y )NrC   )r	   worker_shutdownrW   rc   s    r/   _send_worker_shutdownz$WorkController._send_worker_shutdown   s    $$D$1r.   c                    	 | j                   j                  |        y # t        $ r | j                          Y y t        $ r8}t        j                  d|d       | j                  t               Y d }~y d }~wt        $ r&}| j                  |j                         Y d }~y d }~wt        $ r | j                  t               Y y 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    
	+NN  & 	NN 	+OO5sTJIIzI** 	)IIsxxI((  	+IIzI*	+s,    CC.A44C B!!"CCc                 D    | j                   j                  | d|fd       y )Nregister_with_event_loopzhub.register)argsdescription)r\   send_all)r>   hubs     r/   r   z'WorkController.register_with_event_loop   s&    ,C6& 	  	
r.   c                 :    | j                  | j                  |      S rb   )_quick_acquire_process_taskr>   reqs     r/   _process_task_semz WorkController._process_task_sem   s    ""4#5#5s;;r.   c                     	 |j                  | j                         y# t        $ r$ 	 | j                          Y y# t        $ r Y Y y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   sK    	""499- 	##%! 	s$    	A:	AAAAc                 X    	 | j                   j                          y # t        $ r Y y w xY wrb   )rk   closer   rc   s    r/   signal_consumer_closez$WorkController.signal_consumer_close   s)    	MM! 		s    	))c                     t               dk(  xrC | j                  j                  j                  j                  xr | j
                  j                   S )Ndefault)r   rR   	transport
implementsasynchronousr2   
IS_WINDOWSrc   s    r/   rS   z#WorkController.should_use_eventloop   sE    "$	1 (((33@@(HH'''	)r.   c                     ||| _         | j                  j                  t        k(  r:| j	                          |r| j
                  j                  r| j                  d       | j                          y)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   sV    $DM>>3&&&( DII$9$9D)""$r.   c                     | j                   j                  t        k7  r<| j                          |r| j                  j
                  r| j                  d       yyy)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   sG    >>9,&&( DII$9$9E* %: -r.   c                     | j                   Qt        t              5  | j                   j                  | |        | j                   j	                          d d d        y y # 1 sw Y   y xY w)N)r   )r\   r   SHUTDOWN_SOCKET_TIMEOUTrp   join)r>   r   s     r/   r   zWorkController._shutdown  s_     >>%'(?@ &##DH#=##%& & && &s   9AA(c                    t        | j                  |||             | j                  r4| j                  j                          | j                  j	                          	 | j
                  j                          y # t        $ r Y y 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  ss    T!!&8 " = 	> ==MM++-MM++-	II" 		s   A: :	BBc                       fdt        |) j                  j                  j                        D        S |xs d      D        S )Nc              3   D   K   | ]  } j                   |fi   y wrb   )_maybe_reload_module).0r   r?   r>   s     r/   	<genexpr>z1WorkController._reload_modules.<locals>.<genexpr>  s+      
 &D%%a262
s    r-   )r   r2   r7   r   )r>   r   r?   s   ` `r/   r   zWorkController._reload_modules  sL    
#O 55 B
 	
 3:-RB
 	
r.   c                    |t         j                  vr;t        j                  d|       | j                  j
                  j                  |      S |r3t        j                  d|       t        t         j                  |   |      S y )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  sc    $LL.788??226::LL.7"3;;v#6AA r.   c                 $   t        j                  t        j                        | j                  z
  }| j
                  j                  t        j                         t        | j                  j                        t        |j                               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'  s`    hll+d.?.??//yy{TXX^^, 4 4 679 	9r.   c                    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.  s0   %&MNNx334
QZZ
QZZ
 akk
 QZZ	

 QZZ
 QZZ
 akk
 akk
 QZZ
 q||
 q||
 akk
 akk
 
 QZZ
  akk!
 	
r.   c                 H   | j                         }|j                  | j                  j                  |              |j                  | j                  j                  j                  | j                               	 | j	                         |d<   |S # t
        $ r	 d|d<   Y |S w xY w)Nr  zN/A)r   updater\   rk   r  rM   )r>   r   s     r/   statszWorkController.statsE  s    yy{DNN''-.DMM++00?@	#![[]DN  # 	#"DN	#s   :B B! B!c                 ~    dj                  | | j                  r| j                  j                               S d      S )z``repr(worker)``.z#<Worker: {self.hostname} ({state})>INIT)r>   r   )ry   r\   human_staterc   s    r/   __repr__zWorkController.__repr__O  sE    4;;26..$..,,. < 
 	
FL < 
 	
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.   c                    | j                   j                  }|| _        || _         |d|      | _         |d|      | _         |d||      | _         |d|      | _         |d|      | _         |d|      | _	        |xs || _
         |d|	      | _         |d|
      | _         |d	|      | _         |d
||      | _         |d|      | _         |d||      | _         |d||      | _         |d||      | _         |d|      | _         |d|      | _        t+         |d|            | _         |d|      | _         |d|      | _        y )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*  r+  r,  r)  Or-  r0  r1  r/  rZ   state_dbr  r  scheduler_clsr.  r2  r5  r6  r"  r3  _kwr#  s                                  r/   r:   zWorkController.setup_defaults^  s   *  !"6D!";[I}dH="#4lC	:%$o 
 )-A$%8.I#$:MJ#$:MJ/(C!'$&7"
   0)]K z?<%"O5I 
 $*(*=$
  %+)+?%
! $'v(*=(
 $  $*(*=$
  !''9;K Lr.   )NN)NNNNNNrb   )FN)F)T)NFN)NWARNNNNNNNNNNNNNNNNNNNNNNNNNNN)-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   >   s8   $
CGIDI H
I'' 
	; HLHL&-P8*#J 
@2+
<)
%+&

B9
.
   IMAE7;&*%)%),0#"&'+!% $ $'+,0%))-+/EI(,,0);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>rL     s    
 
 '  1  .  + U U 7 0 # 4 B ) 7 
     [M [M/  Hs   8B BB