
     hA                        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 dd
lmZmZ ddlmZ ddlmZ ddlmZ dZdZ ee          Z  edg d          Z!d Z"d Z# G d de          Z$d Z%d Z& e&            d             Z' e&dddefg          drd            Z(d  Z) e&d!d"#          d$             Z*ej+        j,        fd%Z-ej.        j/        ej0        j/        fd&Z1 e%d'd"#          dsd(            Z2 e%d'd)e3fgd*+          d,             Z4 e%d-e3fd.e3fgd/0          d1             Z5 e%d-e3fd2e6fd3e6fgd40          dtd5            Z7 e&            d6             Z8 e%            dud7            Z9 e%            d8             Z: e%            d9             Z; e%            d:             Z< e&d;          dud<            Z= e&d=>          d?             Z> e&            d@             Z? e&dAB          dC             Z@dD ZA e&dEB          dF             ZB e&dGB          drdH            ZC e&dIB          dJ             ZD e&dKdLdMN          dvdO            ZE e&dPdQe3fdReFfdSeFfgdTU          dwdY            ZG e&            dZ             ZH e&d[eFfgd\0          dxd]            ZI e%d^eFfgd_0          dyd`            ZJ e%d^eFfgd_0          dyda            ZK e%            dzdb            ZL e%dceFfddeFfgde0          d{df            ZM e%            d|dh            ZN e%die3fdje3fdke3fdle3fgdm0          	 	 dtdn            ZO e%die3fgdo0          dp             ZP e&            dq             ZQdS )}z.Worker remote control command implementations.    N)UserDict
namedtuple)TERM_SIGNAME)	safe_repr)WorkerShutdown)signals)
maybe_list)
get_logger)jsonify	strtobool)rate   state)Request)Panel)exchangerouting_key
rate_limitcontroller_info_t)aliastypevisibledefault_timeouthelp	signatureargsvariadicc                 
    d| iS )Nok values    Q/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/celery/worker/control.pyr    r       s    %=    c                 
    d| iS )Nerrorr!   r"   s    r$   nokr(   "   s    Ur%   c                   N    e Zd ZdZi Zi Zed             Ze	 	 	 dd            ZdS )	r   z+Global registry of remote control commands.c                 @    |r  | j         di || S  | j         di |S )Nr!   )	_register)clsr   kwargss      r$   registerzPanel.register,   sA     	2*=3=**6**D11s}&&v&&&r%   NcontrolT      ?c
           
      6    	  	f
d}
|
S )Nc           
         
 p| j         }p3| j        pd                                                    d          d         }| j        |<   t          
|	          j        |<   r
| j        <   | S )N 
r   )__name____doc__stripsplitdatar   meta)funcontrol_name_helpr   r   r,   r   r   namer   r   r   r   s      r$   _innerzPanel._register.<locals>._inner7   s    /3<LFS[.B5577==dCCAFE%(CH\"%6tWoy$&2 &2CH\"  &"%Jr%   r!   )r,   r>   r   r   r   r   r   r   r   r   r?   s   `````````` r$   r+   zPanel._register2   sY    
		 		 		 		 		 		 		 		 		 		 		 		 		 		 r%   )	NNr/   Tr0   NNNN)	r5   
__module____qualname__r6   r9   r:   classmethodr.   r+   r!   r%   r$   r   r   &   sf        55DD' ' ['
 3<:>6:   [  r%   r   c                  (    t          j        dddi| S )Nr   r/   r!   r   r.   r-   s    r$   control_commandrF   D       >33y3F333r%   c                  (    t          j        dddi| S )Nr   inspectr!   rD   rE   s    r$   inspect_commandrJ   H   rG   r%   c                 N    t          | j                                                  S )z6Information about Celery installation for bug reports.)r    app	bugreportr   s    r$   reportrN   N   s      ei!!##$$$r%   	dump_confz[include_defaults=False]with_defaults)r   r   r   Fc                 v    t          | j        j                            |          t          t
                    S )zList configuration.)rP   )	keyfilterunknown_type_filter)r   rL   conftable_wanted_config_keyr   )r   rP   r-   s      r$   rT   rT   T   s8     59>''m'DD/'02 2 2 2r%   c                 X    t          | t                    o|                     d           S )N__)
isinstancestr
startswith)keys    r$   rV   rV   `   s&    c3<t(<(<$<<r%   idsz[id1 [id2 [... [idN]]]])r   r   c                 N    d t          t          |                    D             S )z!Query for task information by id.c                 `    i | ]+}|j         t          |          |                                f,S r!   )id_state_of_taskinfo).0reqs     r$   
<dictcomp>zquery_task.<locals>.<dictcomp>l   sA        	$$chhjj1  r%   )_find_requests_by_idr	   )r   r]   r-   s      r$   
query_taskrg   f   s1     '
388   r%   c              #   P   K   | D ] }	  ||          V  # t           $ r Y w xY wd S N)KeyError)r]   get_requesttask_ids      r$   rf   rf   r   s]        	+g&&&&&& 	 	 	D	 s   
##c                 :     ||           rdS  ||           rdS dS )Nactivereservedreadyr!   )request	is_activeis_reserveds      r$   ra   ra   {   s7     y x	W		 z7r%   rl   c                    t          t          |          pg           d}}t          |          }t                      }t          j                            |           |rt          j        |pt                    }t          |          D ]|}	|	j
        |vrq|                    |	j
                   t                              d|	j
        |           |	                    | j        j        |           t          |          |k    r n}|st#          d          S t#          d                    d                    |                              S d                    |          }
t                              d|
           t#          d|
 d	          S )
zRevoke task by task id (or list of ids).

    Keyword Arguments:
        terminate (bool): Also terminate the process if the task is active.
        signal (str): Name of signal to use for terminate (e.g., ``KILL``).
    NzTerminating %s (%s))signalzterminate: tasks unknownzterminate: {}z, zTasks flagged as revoked: %sztasks z flagged as revoked)setr	   lenworker_staterevokedupdate_signalssignumr   rf   r`   addloggerrb   	terminateconsumerpoolr    formatjoin)r   rl   r   ru   r-   task_idssize
terminatedr|   rq   idstrs              r$   revoker      so    Jw//5266gHx==DJ))) A!7<88+H55 	 	Gz++wz***17:vFFF!!%."5f!EEEz??d**E 	20111/((:)>)>??@@@IIhE
KK.6661u111222r%   ru   z <signal> [id1 [id2 [... [idN]]]])r   r   r   c                 (    t          | |d|          S )z+Terminate task by task id (or list of ids).T)r   ru   )r   )r   ru   rl   r-   s       r$   r   r      s     %D@@@@r%   	task_namer   z0<task_name> <rate_limit (e.g., 5/s | 5/m | 5/h)>)r   r   c                     	 t          |           n)# t          $ r}t          d|          cY d}~S d}~ww xY w	 || j        j        |         _        n<# t          $ r/ t                              d|d           t          d          cY S w xY w| j	        
                                 |s*t                              d|           t          d          S t                              d	||           t          d
          S )zTell worker(s) to modify the rate limit for a task by type.

    See Also:
        :attr:`celery.app.task.Task.rate_limit`.

    Arguments:
        task_name (str): Type of task to set rate limit for.
        rate_limit (int, str): New rate limit.
    zInvalid rate limit string: Nz&Rate limit attempt for unknown task %sTexc_infounknown taskz)Rate limits disabled for tasks of type %sz rate limit disabled successfullyz(New rate limit for tasks of type %s: %s.znew rate limit set successfully)r   
ValueErrorr(   rL   tasksr   rj   r~   r'   r   reset_rate_limitsrb   r    )r   r   r   r-   excs        r$   r   r      s7   ":Z : : :88899999999:#0:		"-- # # #= 	 	/ 	/ 	/>"""""#
 
N$$&&& 6?KKK4555
KK::' ' '/000s%    
8388A 6BBsofthardz#<task_name> <soft_secs> [hard_secs]c                    	 | j         j        |         }n<# t          $ r/ t                              d|d           t          d          cY S w xY w||_        ||_        t                              d|||           t          d          S )zTell worker(s) to modify the time limit for task by type.

    Arguments:
        task_name (str): Name of task to change.
        hard (float): Hard time limit.
        soft (float): Soft time limit.
    z-Change time limit attempt for unknown task %sTr   r   z5New time limits for tasks of type %s: soft=%s hard=%sztime limits set successfully)
rL   r   rj   r~   r'   r(   soft_time_limit
time_limitrb   r    )r   r   r   r   r-   tasks         r$   r   r      s    #yy) # # #D 	 	/ 	/ 	/>"""""#
  DDO
KKG4' ' ',---s    6AAc                 (    d| j         j        j        iS )z Get current logical clock value.clock)rL   r   r#   r   r-   s     r$   r   r      s     UY_*++r%   c                 d    | j         j        r#| j         j                            |||           dS dS )zHold election.

    Arguments:
        id (str): Unique election id.
        topic (str): Election topic.
        action (str): Action to take for elected actor.
    N)r   gossipelection)r   r`   topicactionr-   s        r$   r   r     s>     ~ :&&r5&99999: :r%   c                     | j         j        }|j        rLd|j        vrC|j                            d           t                              d           t          d          S t          d          S )z+Tell worker(s) to send task-related events.r   z)Events of group {task} enabled by remote.ztask events enabledztask events already enabled)r   event_dispatchergroupsr}   r~   rb   r    r   
dispatchers     r$   enable_eventsr     sn     0J )V:+<<<f%%%?@@@'(((+,,,r%   c                     | j         j        }d|j        v rC|j                            d           t                              d           t          d          S t          d          S )z3Tell worker(s) to stop sending task-related events.r   z*Events of group {task} disabled by remote.ztask events disabledztask events already disabled)r   r   r   discardr~   rb   r    r   s     r$   disable_eventsr     sd     0J"""!!&)))@AAA())),---r%   c                     t                               d           | j        j        } |j        dddit
          j         dS )z3Tell worker(s) to send event heartbeat immediately.zHeartbeat requested by remote.worker-heartbeatfreq   N)r   )r~   debugr   r   sendrx   SOFTWARE_INFOr   s     r$   	heartbeatr   %  sG     LL12220JJOMMQM,2LMMMMMr%   )r   c                 0   || j         k    rt                              d|           |rt          j                            |           t          j                                         t          j        j        | j        j	        
                                dS dS )zRequest mingle sync-data.zsync with %s)ry   r   N)hostnamer~   rb   rx   ry   rz   purge_datarL   r   forward)r   	from_nodery   r-   s       r$   hellor   /  s     EN""NI... 	1 ''000""$$$#+1Y_,,..
 
 	
 #"r%   g?)r   c                      t          d          S )zPing worker(s).pong)r    r   s     r$   pingr   A  s     f::r%   c                 >    | j         j                                        S )z&Request worker statistics/information.)r   
controllerstatsr   s     r$   r   r   G  s     >$**,,,r%   dump_schedule)r   c                 N    t          t          | j        j                            S )z0List of currently scheduled ETA/countdown tasks.)list_iter_schedule_requestsr   timerr   s     r$   	scheduledr   M  s      '(<==>>>r%   c              #   $  K   | j         j        D ]}	 |j        j        d         }t	          |t
                    r?|j        r|j                                        nd |j        |	                                dV  j# t          t          f$ r Y }w xY wd S )Nr   )etapriorityrq   )schedulequeueentryr   rY   r   r   	isoformatr   rb   
IndexError	TypeError)r   waitingarg0s      r$   r   r   S  s      >'  
	=%a(D $(( 378E48--/// ' 0#yy{{    	 I& 	 	 	H	 s   A99BBdump_reservedc                     |                      t          j                  |                      t          j                  z
  }|sg S d |D             S )zAList of currently reserved tasks, not including scheduled/active.c                 6    g | ]}|                                 S r!   rb   )rc   rq   s     r$   
<listcomp>zreserved.<locals>.<listcomp>k  s     999wGLLNN999r%   )tsetrx   reserved_requestsactive_requests)r   r-   reserved_taskss      r$   ro   ro   b  sU     	

<122

</00	1   	99.9999r%   dump_activec                 Z    fd|                      t          j                  D             S )z'List of tasks currently being executed.c                 <    g | ]}|                                S ))safer   )rc   rq   r   s     r$   r   zactive.<locals>.<listcomp>q  s=     E E E LLdL## E E Er%   )r   rx   r   )r   r   r-   s    ` r$   rn   rn   n  sE    E E E E ::l&BCCE E E Er%   dump_revokedc                 4    t          t          j                  S )zList of revoked task-ids.)r   rx   ry   r   s     r$   ry   ry   u  s     $%%%r%   
dump_taskstaskinfoitemsz[attr1 [attr2 [... [attrN]]]])r   r   r   c                     | j         j        pt          |rnd D             }fdfdt          |          D             S )zList of registered tasks.

    Arguments:
        taskinfoitems (Sequence[str]): List of task attributes to include.
            Defaults to ``exchange,routing_key,rate_limit``.
        builtins (bool): Also include built-in tasks.
    c              3   D   K   | ]}|                     d           |V  dS )zcelery.N)r[   )rc   r   s     r$   	<genexpr>zregistered.<locals>.<genexpr>  sP       "@ "@DOOI$>$>"@"@ "@ "@ "@ "@ "@r%   c                       fdD             }|rLd |                                 D             }d                     j        d                    |                    S  j        S )Nc           
      p    i | ]2}t          |d           |t          t          |d                     3S ri   )getattrrZ   )rc   fieldr   s     r$   re   z5registered.<locals>._extract_info.<locals>.<dictcomp>  sK     
 
 
7<tUD))5 3wtUD1122555r%   c                 8    g | ]}d                      |          S )=)r   )rc   fs     r$   r   z5registered.<locals>._extract_info.<locals>.<listcomp>  s"    888ACHHQKK888r%   z{} [{}] )itemsr   r>   r   )r   fieldsrb   r   s   `  r$   _extract_infoz!registered.<locals>._extract_info  s{    
 
 
 
@M
 
 
  	?88888D##DIsxx~~>>>yr%   c                 2    g | ]} |                   S r!   r!   )rc   r   r   regs     r$   r   zregistered.<locals>.<listcomp>  s'    ???MM#d)$$???r%   )rL   r   DEFAULT_TASK_INFO_ITEMSsorted)r   r   builtinsr-   r   r   r   s    `   @@r$   
registeredr   {  s     )/C!<%<M @CC "@ "@"@ "@ "@E     @????????r%   g      N@r   num	max_depthz.[object_type=Request] [num=200 [max_depth=10]])r   r   r      
   r   c                 p   	 ddl }n# t          $ r t          d          w xY wt                              d|           t	          j        ddd          5 }|                    |          d|         |                    |fd	|j        
           d|j        icddd           S # 1 swxY w Y   dS )a  Create graph of uncollected objects (memory-leak debugging).

    Arguments:
        num (int): Max number of objects to graph.
        max_depth (int): Traverse at most n levels deep.
        type (str): Name of object to graph.  Default is ``"Request"``.
    r   NzRequires the objgraph libraryzDumping graph for type %rcobjgz.pngF)prefixsuffixdeletec                     | v S ri   r!   )vobjectss    r$   <lambda>zobjgraph.<locals>.<lambda>  s    Q'\ r%   )r   	highlightfilenamer  )	objgraphImportErrorr~   rb   tempfileNamedTemporaryFileby_typeshow_backrefsr>   )r   r   r   r   	_objgraphfhr   s         @r$   r  r    s6   ;$$$$$ ; ; ;9:::;
KK+T222		$G,25
B 
B 
B %EG##D))$3$/+A+A+A+AW 	  	
 	
 	

 BG$% % % % % % % % % % % % % % % % % %s    "AB++B/2B/c                 "    ddl m}  |            S )z Sample current RSS memory usage.r   )
sample_mem)celery.utils.debugr  )r   r-   r  s      r$   	memsampler    s"     .-----:<<r%   samplesz[n_samples=10]c                     ddl m} t          j                    }|                    |           |                                S )z/Dump statistics of previous memsample requests.r   )r   )file)celery.utilsr   ioStringIOmemdumpgetvalue)r   r  r-   r   outs        r$   r  r    sC     #"""""
+--C	MMsM<<>>r%   nz[N=1]c                     | j         j        j        rt          d          S | j         j                            |           | j                             |           t          d          S )z!Grow pool by n processes/threads.zJpool_grow is not supported with autoscale. Adjust autoscale range instead.zpool will grow)r   r   
autoscalerr(   r   grow_update_prefetch_countr    r   r  r-   s      r$   	pool_growr    sa     ~ + 1_```  ###--a000r%   c                     | j         j        j        rt          d          S | j         j                            |           | j                             |            t          d          S )z#Shrink pool by n processes/threads.zLpool_shrink is not supported with autoscale. Adjust autoscale range instead.zpool will shrink)r   r   r  r(   r   shrinkr  r    r  s      r$   pool_shrinkr"    sc     ~ + 2abbb""1%%%--qb111 !!!r%   c                     | j         j        j        r1| j        j                            |||           t          d          S t          d          )zRestart execution pool.)reloaderzreload startedzPool restarts not enabled)rL   rT   worker_pool_restartsr   r   reloadr    r   )r   modulesr&  r$  r-   s        r$   pool_restartr(    sQ     y~* 6!((&8(LLL"###4555r%   maxminz[max [min]]c                     | j         j        j        }|r.|                    ||          \  }}t	          d| d|           S t          d          )zModify autoscale settings.zautoscale now max=z min=zAutoscale not enabled)r   r   r  rz   r    r   )r   r)  r*  r  max_min_s         r$   	autoscaler.    s`     *5J :&&sC00
d8t88$88999
,
-
--r%   Got shutdown from remotec                 T    t                               |           t          |          )zShutdown worker(s).)r~   warningr   )r   msgr-   s      r$   shutdownr3    s$     NN3


r%   r   r   exchange_typer   z'<queue> [exchange [type [routing_key]]]c                 l     | j         j        | j         j        |||pd|fi | t          d|           S )z2Tell worker(s) to consume from task queue by name.directzadd consumer )r   	call_soonadd_task_queuer    )r   r   r   r4  r   optionss         r$   add_consumerr:    s^     EN%x2(KL LCJL L L %e%%&&&r%   z<queue>c                 p    | j                             | j         j        |           t          d|           S )z9Tell worker(s) to stop consuming from task queue by name.zno longer consuming from )r   r7  cancel_task_queuer    )r   r   _s      r$   cancel_consumerr>    sA     
N(%   1%11222r%   c                 T    | j         j        rd | j         j        j        D             S g S )z:List the task queues a worker is currently consuming from.c                 T    g | ]%}t          |                    d                     &S )T)recurse)dictas_dict)rc   r   s     r$   r   z!active_queues.<locals>.<listcomp>-  sD     B B B U]]4]0011 B B Br%   )r   task_consumerqueuesr   s    r$   active_queuesrF  )  sF     ~# BB B"^9@B B B 	BIr%   )F)FN)NNNri   )NF)r   r   r   )r   )r   )NFN)NN)r/  )Rr6   r  r  collectionsr   r   billiard.commonr   kombu.utils.encodingr   celery.exceptionsr   celery.platformsr   r{   celery.utils.functionalr	   celery.utils.logr
   celery.utils.serializationr   r   celery.utils.timer   r3   r   rx   rq   r   __all__r   r5   r~   r   r    r(   r   rF   rJ   rN   rT   rV   rg   requests__getitem__rf   r   __contains__r   ra   r   rZ   r   r   floatr   r   r   r   r   r   r   r   r   r   r   ro   rn   ry   r   intr  r  r  r  r"  r(  r.  r3  r:  r>  rF  r!   r%   r$   <module>rV     sk   4 4 				  , , , , , , , , ( ( ( ( ( ( * * * * * * , , , , , , 0 0 0 0 0 0 . . . . . . ' ' ' ' ' ' 9 9 9 9 9 9 9 9 " " " " " " # # # # # #      
C 	H		J2 5 5 5           H   <4 4 44 4 4 % % %
 
(I
&	'  
2 2 2 
2= = = '   	  &2%:%F    *9F+=J    '   3  3  3	  3F S/	0  
A A 
A
 
|S1	2@  !1 !1	 !1H 
vuo	?3  . . .	 .4 , , ,
 	: 	: 	: 	: - - - . . . N N N 
 
 
  
" %%%  &%
 - - -
 '''? ? ('?
   ''': : (': }%%%E E E &%E ~&&&& & '&&
 
-  
@ @ @ 
@: 3-%S'9	:>  
% % % 
%0    c
	    	  *       	   *  " " "	 " 6 6 6 6 #,	%  . . .	 .     	#	S	#		
 8   =A!' ' ' ' C.	  3 3	 3     r%   