
     h4                        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mZ ddlmZ ddlmZ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/          Z0ej        1                    d          Z2 e3ed          Z4g dZ5dZ6dZ7d Z8d Z9 G d de-          Z:ddedefdZ;e
d k    r ee;d!d"ee#          Z<n ee;d!de$          Z<e2s ee;d d"ee#          Z=nd% xZ<Z=d& Z>e2s ee;d'e>e(          Z?nd) Z?d* Z@d3d,ZAd4d.ZB	 	 d5d1ZCd3d2ZDdS )6zWorker 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)WorkerShutdownWorkerTerminate)	AppLoader)
EX_FAILUREEX_OKcheck_privilegesisatty)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     N/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/celery/apps/worker.py	<genexpr>z&active_thread_count.<locals>.<genexpr>M   sJ       3 3Qf''113q 3 3 3 3 3 3    )	threadingr&   sumr%   s    r-   active_thread_countr2   K   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_sayr<   Q   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sendrA   r   accept_content)selfrC   kwargss      r-   on_before_initzWorker.on_before_initX   so    
(4=AAA 	!!=4 	" 	
 	
 	
 	566666r/   Nc                 r   | j                             d|          | _        | j                             d|          | _         t	                      j        di | || _        || _        t          t          j
                  | _        | j         j                            | j        || n|          | _        d S )Nworker_redirect_stdoutsworker_redirect_stdouts_level)enabled )rE   eitherredirect_stdoutsredirect_stdouts_levelsupersetup_defaultspurgeno_colorr   r9   stdout_isattylogcoloredlogfile)rJ   rW   rX   rS   rT   rK   	__class__s         r-   on_after_initzWorker.on_after_initd   s     !%%'7!9 !9&*hoo+-C'E 'E#(((((
 cj))x|++L$,$8LLh , 
 
r/   c                 v    |                                  | _        t          j        | j        | j                   d S N)setup_logging_custom_loggingr   rD   rE   rF   rJ   s    r-   on_init_blueprintzWorker.on_init_blueprintt   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@   rA   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.)rE   rU   on_startr
   celeryd_after_setuprH   rF   rA   rW   purge_messagesrC   emit_bannerset_process_statusinstall_platform_tweaksrc   rS   r[   rT   _config_source
isinstancestrlowermaybe_warn_deprecated_settingsloggerwarning)rJ   rE   warn_deprecatedconfig_sourcer^   s       r-   rg   zWorker.on_startz   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 
)artlinesTr5   )r   supports_imagesr8   imgcatr   logor   joinro   r\   cyanstartup_inforeset
extra_infor9   
__stdout__)rJ   	use_images     r-   rj   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_readyrH   rr   infor   rF   )rJ   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)rS   colorizerF   )rX   rE   r[   setuploglevelr]   rF   )rJ   r   s     r-   rb   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)r7   )rE   connection_for_writecontrolrW   r8   r   )rJ   r   counts      r-   ri   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Tr4   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/   )r|   sortedrE   tasks)rJ   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)rJ   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)
rE   rF   	timestampversionconninforesultsconcurrencyplatformeventsqueuesr   z                r4   )#rE   ro   r   r   mainidrn   loaderr   r   r*   	autoscalepool_cls
__module__splittask_eventsBANNERr   rF   r   nowreplacer   r   as_uribackend	_platformr   amqpr   
splitlinesr&   r|   ARTLINES
IndexError)rJ   rx   rE   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)rE   IS_macOS macOS_proxy_detection_workaroundrZ   !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)rJ   workers     r-   rl   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
setdefaultrd   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   rF   )r	   set_mp_process_titlestrargvr9   argvrF   )rJ   r   s     r-   rk   zWorker.set_process_status  sE    -::I-ch77:::]
 
 
 	
r/   )F)FNNNra   )Tr4   r   )T)__name__r   __qualname____doc__rL   r_   re   rg   rj   r   rb   ri   r   r   r~   rl   r   rk   __classcell__)r^   s   @r-   r   r   U   s7       
7 
7 
7 
7 37DH
 
 
 
 
 
 B B B& & & & &P
. 
. 
.: : :
 
 
 
l l l
 
 
 
9 9 9(( (( (( ((T  ,F F F
 
 
 
 
 
 
r/   r   TERMWarmc                 r      fd}t          d           |_        |t          j        <   d S )Nc                     t                      5  ddlm} t                      j        dk    rHr            t          d d           t          j                            j	                   t                      dk    rt          |dd	d
                    n           	 d d d            d S # 1 swxY w Y   d S )Nr   stateMainProcesszworker: z shutdown (MainProcess))r?   sighowexitcoder(   should_stopshould_terminate)r   Cold)r   celery.workerr   r   _namer<   r
   worker_shutting_downrH   rF   r2   setattr)argsr   callbackexcr   r   r   r   s     r-   _handle_requestz*_shutdown_handler.<locals>._handle_request  sV   __ 	$ 	$++++++  &-77 %HV$$$@C@@@AAA,11!?% 2    #$$q(((: <  <<? ABJL L L L c(mm#L	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   BB<<C C worker_)ro   r   r	   r
   )r   r   r   r   r   r   r   s   `````` r-   _shutdown_handlerr     se    $ $ $ $ $ $ $ $ $ $   #?S??33O,Icr/   SIGQUITSIGTERMr   )r   r   r   r   )r   r   r   c                      d S ra   rQ   )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   )r<   r   )r   s    r-   	on_SIGINTr
  C  s*    MNNN$V::::::r/   r  )r   r   r   c                      d S ra   rQ   )r   rK   s     r-   r   r   N  s    r/   c                      t          j        t          j        t          j        t          j        g           t          j        t          j        t          j        gt          j	        z              d S ra   )
r	   close_open_fdsr9   	__stdin__r   r:   r   execv
executabler   rQ   r/   r-   _reload_current_workerr  R  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   r<   r|   r9   r   atexitregisterr  r   r   r   r   )r   r  r   s      r-   restart_worker_sig_handlerzBinstall_worker_restart_handler.<locals>.restart_worker_sig_handler[  st    $Cchhsx.@.@CCCDDD.///''''''!r/   r	   r
   )r   r   r  s      r-   r   r   Y  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   r<   r   )r   s    r-   cry_handlerz(install_cry_handler.<locals>.cry_handlerk  s    __ 	 	SUUOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8<<)is_pypyr	   r
   )r   r  s     r-   r   r   f  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_handleru  s    __ 	 	<<<<<<<<  $8DGGEIe	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   -A		AA)r   r   getr	   r
   )envvarr   r'  s      r-   r   r   r  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   r<   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  )Er   r   r   r   r   r9   r   	functoolsr   billiard.commonr   billiard.processr   kombu.utils.encodingr   celeryr   r	   r
   
celery.appr   celery.exceptionsr   r   celery.loaders.appr   celery.platformsr   r   r   r   celery.utilsr   r   celery.utils.debugr   celery.utils.importsr   celery.utils.logr   r   r   celery.utils.textr   r   r   __all__r   rr   r*   	is_jythonhasattrr  r   r   r   r2   r<   r   r   r   r   r
  r   r  r   r   r   r   rQ   r/   r-   <module>r?     s     				     



             ) ) ) ) ) ) , , , , , , ) ) ) ) ) ) 5 5 5 5 5 5 5 5 5 5       = = = = = = = = ( ( ( ( ( ( H H H H H H H H H H H H % % % % % % % % " " " " " " ) ) ) ) ) ) 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(4%- - - -, I")'yf/T^# # # #*'yf.# # #  A'.wyf/( ( ($$ ,A+@A(; ; ;
  !(x)" " "
  : : :
8 
8 
8 
8	) 	) 	) 	)  /%- - - -1 1 1 1 1 1r/   