
    `f3                     x   d Z ddl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 ddlmZ ddlmZmZmZ dd	lmZ dd
l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#m$Z$m%Z% ddl&m'Z' ddl(m)Z) dZ* e#e+          Z,ej        -                    d          Z. e/ed          Z0g dZ1dZ2dZ3d Z4d Z5 G d de)          Z6dddefdZ7e
dk    r ee7d d!e"          Z8n ee7d d#          Z8e.s ee7dd!e"          Z9nd$ xZ8Z9d% Z:e.s ee7d&e:e'          Z;nd( Z;d) Z<d2d+Z=d3d-Z>	 	 d4d0Z?d2d1Z@dS )5zWorker command-line program.

This module is the 'program-version' of :mod:`celery.worker`.

It does everything necessary to run that module
as an actual application, like installing signal handlers,
platform tweaks, and so on.
    N)datetime)partial)REMAP_SIGTERM)current_process)safe_str)VERSION_BANNER	platformssignals)trace)	AppLoader)
EX_FAILUREEX_OKcheck_privileges)staticterm)cry)qualname)
get_loggerin_sighandlerset_in_sighandler)	pluralize)WorkController)Workerjavapypy_version_info) ----------------- ***** ------- ******* ----- *** --- * ---- ** ----------r    r    r    r   r   r   r   z{hostname} v{version}

{platform} {timestamp}

[config]
.> app:         {app}
.> transport:   {conninfo}
.> results:     {results}
.> concurrency: {concurrency}
.> task events: {events}

[queues]
{queues}
z
[tasks]
{tasks}
c                  P    ddl m}  t          d  |             D                       S )Nr   	enumeratec              3   N   K   | ] }|j                             d           dV  !dS )zDummy-   N)name
startswith).0ts     D/var/www/html/env/lib/python3.11/site-packages/celery/apps/worker.py	<genexpr>z&active_thread_count.<locals>.<genexpr>L   sJ       3 3Qf''113q 3 3 3 3 3 3    )	threadingr#   sumr"   s    r*   active_thread_countr/   J   sG    ###### 3 3))++ 3 3 3 3 3 3r,   c                 D    t          d|  t          j        d           d S )N
Tfileflush)printsys
__stderr__)msgs    r*   safe_sayr9   P   s%    	*s**3>666666r,   c                        e Zd ZdZddZ	 	 d fd	Zd Z fdZd Zd	 Z	dd
Z
d ZddZd ZddZd Zd Zd Z xZS )r   zWorker as a program.Fc                     || _         t          j        | j        | j                   t
          j                            | j        | | j        j        |           t          | j        j        j
                   d S )N)senderinstanceconfoptions)quietr   setup_worker_optimizationsapphostnamer
   celeryd_initsendr>   r   accept_content)selfr@   kwargss      r*   on_before_initzWorker.on_before_initW   so    
(4=AAA 	!!=4 	" 	
 	
 	
 	566666r,   Nc                 |   | j                             d|          | _        | j                             d|          | _         t	                      j        di | || _        || _        t          j	        
                                | _        | j         j                            | j        || n|          | _        d S )Nworker_redirect_stdoutsworker_redirect_stdouts_level)enabled )rB   eitherredirect_stdoutsredirect_stdouts_levelsupersetup_defaultspurgeno_colorr6   stdoutisatty_isattylogcoloredlogfile)rG   rT   rU   rP   rQ   rH   	__class__s         r*   on_after_initzWorker.on_after_initc   s     !%%'7!9 !9&*hoo+-C'E 'E#(((((
 z((**x|++L$,$8LLh , 
 
r,   c                 v    |                                  | _        t          j        | j        | j                   d S N)setup_logging_custom_loggingr   rA   rB   rC   rG   s    r*   on_init_blueprintzWorker.on_init_blueprints   s5    #1133 	(4=AAAAAr,   c                    | j         }t                                                       t          j                            | j        | |j                   | j        r| 	                                 | j
        s|                                  |                     d           |                     |            | j        s&| j        r|j                            | j                   d}|j        }t'          |t(                    r|                                dv}|r5|j                                        rt.                              d           d S d S d S )N)r<   r=   r>   z-active-T)zdjango.conf:settingszPlease run `celery upgrade settings path/to/settings.py` to avoid these warnings and to allow a smoother upgrade to Celery 6.0.)rB   rR   on_startr
   celeryd_after_setuprE   rC   r>   rT   purge_messagesr@   emit_bannerset_process_statusinstall_platform_tweaksra   rP   rY   rQ   _config_source
isinstancestrlowermaybe_warn_deprecated_settingsloggerwarning)rG   rB   warn_deprecatedconfig_sourcer\   s       r*   re   zWorker.on_starty   sv   h 	#((=4ch 	) 	
 	
 	
 : 	"!!!z 	
+++$$T***# 	B(= 	BG$$T%@AAA *mS)) 	 ,1133 < O  	x6688 %    	 	 r,   c                    t          j                    }|r2t          t          j        t	          j                                         t          t          d                    t          | j	        
                    d|                     |                               t          | j	                            |                                 pd                    g                    t          j        d           d S )N z 
)artlinesTr2   )r   supports_imagesr5   imgcatr   logor   joinrm   rZ   cyanstartup_inforeset
extra_infor6   
__stdout__)rG   	use_images     r*   rh   zWorker.emit_banner   s     (**	 	.$+fkmm,,---hrww!!t((i-(@@B B C C""4??#4#4#:;;<< 
     .		. 	. 	. 	. 	. 	.r,   c                     t           j                            |           t                              dt          | j                             d S )N)r<   z	%s ready.)r
   worker_readyrE   rp   infor   rC   )rG   consumers     r*   on_consumer_readyzWorker.on_consumer_ready   s@    !!!222K$-!8!899999r,   c                     || j         | j          }| j        j                            | j        | j        d|| j                  S )NF)rP   colorizerC   )rU   rB   rY   setuploglevelr[   rC   )rG   r   s     r*   r`   zWorker.setup_logging   sL     9=(Hx|!!M4<"X " 
 
 	
r,   c           
          | j                                         5 }| j         j                            |          }|r&t	          d| dt          |d           dd           d d d            d S # 1 swxY w Y   d S )N)
connectionzpurge: Erased  messagez from the queue.
T)r4   )rB   connection_for_writecontrolrT   r5   r   )rG   r   counts      r*   rg   zWorker.purge_messages   s    X**,, 	l
H$**j*AAE l^u^^y	/J/J^^^fjkkkk	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	l 	ls   A	A00A47A4Tr1   celery.c                 x    |                     fdt          | j        j                  D                       S )Nc              3   V   K   | ]#}s|                               n|d | V  $dS )z  . N)r'   )r(   taskinclude_builtinsint_s     r*   r+   z"Worker.tasklist.<locals>.<genexpr>   sd       
 
"1A
OOD))
 
GK
4MM
 
 
 
 
 
r,   )rz   sortedrB   tasks)rG   r   sepr   s    ` `r*   tasklistzWorker.tasklist   sQ    xx 
 
 
 
 
&,TX^&<&<
 
 
 
 
 	
r,   c                     | j         d S | j         t          j        k    rF| j         t          j        k    }|                     |          }t
                              |          S d S )N)r   )r   )r   loggingINFODEBUGr   EXTRA_INFO_FMTformat)rG   r   r   s      r*   r~   zWorker.extra_info   s`    = F=GL((#}=}}6F}GGH!((x(888 )(r,   c                    | j         }t          | j                  }d                    |j        pdt          |                    }t          |j        t                    s<t          |j                  }|
                    d          r
|dd          }|d| dz  }| j        r| j        \  }}d| d| d	}| j        }t          |t                    s|j        }|d|                    d
          d          dz  }d}	| j        sd}	t                               |t#          | j                  t'          j                                        d          t,          | j                                                                         | j         j                                        |t#          t5          j                              |	|j        j                            dd          
  
                                        }
|r_t?          |
          D ]O\  }}	 d                     tB          |         |
|         g          |
|<   2# tD          $ r d|
|         z   |
|<   Y Lw xY wd                     |
          dz   S )Nz{}:{:#x}__main__zcelery.loaders    ()z{min=z, max=}.ONz/OFF (enable -E to monitor tasks in this worker)r   )microsecondF)indentindent_first)
rB   rC   	timestampversionconninforesultsconcurrencyplatformeventsqueuesr   z                r1   )#rB   rm   r   r   mainidrl   loaderr   r   r'   	autoscalepool_cls
__module__splittask_eventsBANNERr   rC   r   nowreplacer   r   as_uribackend	_platformr   amqpr   
splitlinesr#   rz   ARTLINES
IndexError)rG   rv   rB   r   apprr   maxminpoolr   banneri_s                r*   r|   zWorker.startup_info   sj   h$*++  !7ZCAA#*i00 	#cj))F  !122 %NNNN"D> 	6~HC5355c555K}$$$ 	#?D2DJJsOOB/2222 	GFFdm,,lnn,,,;;"X((**1133H$++--#i022338?)))GG  
 
 *,, 	  	5!&)) 5 515 #(1+vay)A B BF1II! 5 5 5 (6!9 4F1III5yy  4''s   +H==IIc                 <   | j         j        r|                                  | j        s+| j         j        rt	          |           nt          |           t          |           t          |           t          |           t                       t                       dS )z1Install platform specific tweaks and workarounds.N)rB   IS_macOS macOS_proxy_detection_workaroundrX   !install_HUP_not_supported_handlerinstall_worker_restart_handlerinstall_worker_term_handler install_worker_term_hard_handlerinstall_worker_int_handlerinstall_cry_handlerinstall_rdb_handler)rG   workers     r*   rj   zWorker.install_platform_tweaks   s    8 	411333 | 		7 x  7 2&9999.v666#F+++(000"6***r,   c                 F    t           j                            dd           dS )z6See https://github.com/celery/celery/issues#issue/161.celery_dummy_proxyset_by_celerydN)osenviron
setdefaultrb   s    r*   r   z'Worker.macOS_proxy_detection_workaround  s"    

24DEEEEEr,   c                 ~    t          j        d| dt          j        t          j                   d| j                  S )Ncelerydr   r   )r   rC   )r	   set_mp_process_titlestrargvr6   argvrC   )rG   r   s     r*   ri   zWorker.set_process_status  sE    -::I-ch77:::]
 
 
 	
r,   )F)FNNNr_   )Tr1   r   )T)__name__r   __qualname____doc__rI   r]   rc   re   rh   r   r`   rg   r   r~   r|   rj   r   ri   __classcell__)r\   s   @r*   r   r   T   s7       
7 
7 
7 
7 37DH
 
 
 
 
 
 B B B& & & & &P
. 
. 
.: : :
 
 
 
l l l
 
 
 
9 9 9(( (( (( ((T  ,F F F
 
 
 
 
 
 
r,   r   TERMWarmc                 n      fd}t          d           |_        |t          j        <   d S )Nc                  T   t                      5  ddlm} t                      j        dk    rHr            t          d d           t          j                            j	                   t          |ddd	                    d d d            d S # 1 swxY w Y   d S )
Nr   stateMainProcesszworker: z shutdown (MainProcess))r<   sighowexitcodeshould_stopshould_terminate)r   Cold)r   celery.workerr   r   _namer9   r
   worker_shutting_downrE   rC   setattr)argsr   callbackr   r   r   r   s     r*   _handle_requestz*_shutdown_handler.<locals>._handle_request  s<   __ 	H 	H++++++  &-77 %HV$$$@C@@@AAA,11!?% 2    EM$68 88;=>FH H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   B BB!$B!worker_)rm   r   r	   r
   )r   r   r   r   r   r   s   ````` r*   _shutdown_handlerr     sh    H H H H H H H H H  #?S??33O,Icr,   SIGQUITSIGTERMr   )r   r   r   )r   r   c                      d S r_   rN   )akws     r*   <lambda>r  <  s    D r,   c                 F    t          d           t          | d           d S )Nz>worker: Hitting Ctrl+C again will terminate all running tasks!SIGINTr   )r9   r   )r   s    r*   	on_SIGINTr  ?  s*    MNNN$V::::::r,   r  )r   r   r   c                      d S r_   rN   )r   rH   s     r*   r   r   J  s    r,   c                      t          j        t          j        t          j        t          j        g           t          j        t          j        t          j        gt          j	        z              d S r_   )
r	   close_open_fdsr6   	__stdin__r   r7   r   execv
executabler   rN   r,   r*   _reload_current_workerr  N  sQ    s~s~    HS^cn-899999r,   SIGHUPc                 *    d }|t           j        |<   d S )Nc                      t          d           t          dd                    t          j                   d           ddl}|                    t                     ddlm	} t          |_        dS )z5Signal handler restarting the current python program.TzRestarting celery worker (r   r   r   Nr   )r   r9   rz   r6   r   atexitregisterr  r   r   r   r   )r   r  r   s      r*   restart_worker_sig_handlerzBinstall_worker_restart_handler.<locals>.restart_worker_sig_handlerW  st    $Cchhsx.@.@CCCDDD.///''''''!r,   r	   r
   )r   r   r  s      r*   r   r   U  s&    " " " 8Icr,   SIGUSR1c                 <    t           rd S d }|t          j        | <   d S )Nc                      t                      5  t          t                                 ddd           dS # 1 swxY w Y   dS )z=Signal handler logging the stack-trace of all active threads.N)r   r9   r   )r   s    r*   cry_handlerz(install_cry_handler.<locals>.cry_handlerg  s    __ 	 	SUUOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8<<)is_pypyr	   r
   )r   r  s     r*   r   r   b  s3        )Icr,   CELERY_RDBSIGSIGUSR2c                 l    d }t           j                            |           r|t          j        |<   d S d S )Nc                      t                      5  ddlm}m} | r| d         n |            j        } ||           ddd           dS # 1 swxY w Y   dS )z=Signal handler setting a rdb breakpoint at the current frame.r   )_frame	set_tracer%   N)r   celery.contrib.rdbr  r   f_back)r   r  r   frames       r*   rdb_handlerz(install_rdb_handler.<locals>.rdb_handlerq  s    __ 	 	<<<<<<<<  $8DGGEIe	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   -A		AA)r   r   getr	   r
   )envvarr   r$  s      r*   r   r   n  sF       
z~~f -!,	#- -r,   c                 0    fd}|t           j        <   d S )Nc                     t                      5  t          d                                         d d d            d S # 1 swxY w Y   d S )NzH{sig} not supported: Restarting with {sig} is unstable on this platform!r  )r   r9   r   )signumr#  r   s     r*   warn_on_HUP_handlerz>install_HUP_not_supported_handler.<locals>.warn_on_HUP_handler  s    __ 	C 	C 228&S&//C C C	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   $AAAr  )r   r   r*  s    ` r*   r   r   }  s6    C C C C C 1Icr,   )r  )r  )r  r  )Ar   r   r   r   r   r6   r   	functoolsr   billiard.commonr   billiard.processr   kombu.utils.encodingr   celeryr   r	   r
   
celery.appr   celery.loaders.appr   celery.platformsr   r   r   celery.utilsr   r   celery.utils.debugr   celery.utils.importsr   celery.utils.logr   r   r   celery.utils.textr   r   r   __all__r   rp   r'   	is_jythonhasattrr  r   r   r   r/   r9   r   r   r   r   r  r   r  r   r   r   r   rN   r,   r*   <module>r;     s     				     



             ) ) ) ) ) ) , , , , , , ) ) ) ) ) ) 5 5 5 5 5 5 5 5 5 5       ( ( ( ( ( ( @ @ @ @ @ @ @ @ @ @ % % % % % % % % " " " " " " ) ) ) ) ) ) I I I I I I I I I I ' ' ' ' ' ' ( ( ( ( ( (
	H		L##F++	
'#*
+
+  
 3 3 37 7 7B
 B
 B
 B
 B
^ B
 B
 B
J #)f#e- - - -& I")'yfz# # # #*'yf# # #  A'.wyf( ( ($$ ,A+@A(; ; ;
  !(x)" " "
  : : :
8 
8 
8 
8	) 	) 	) 	)  /%- - - -1 1 1 1 1 1r,   