
    `f!                        d Z ddlZddl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
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	Zd
e ej                    dZ eej                            dd                    Z eej                            dd                    Z eej                            dd                    Z eej                            dd                    Zi Z  ej!                    Z" ej!                    Z# eee          Z$ e            Z%dgZ& eee          Z'i Z(dZ)dZ*d Z+d Z,e j-        e"j.        fdZ/de j-        e#j.        e%j0        fdZ1de j2        e#j3        e"j3        fdZ4ej                            d          pej                            d          Z5 eej                            d          pej                            d          pd          Z6e5rQddl7Z7ddl8m9Z9 ddl:m;Z; dd l<m=Z=m>Z> da?da@daAdaBe6ZCg ZDe/ZEe4ZF e;            jG        d!k    re7jH        d"             ZId# Z/d$ Z4 G d% d&          ZJdS )'zwInternal worker state (global).

This includes the currently active and reserved tasks,
statistics, and revoked tasks.
    N)Counter)picklepickle_protocol)cached_property)__version__)WorkerShutdownWorkerTerminate)
LimitedSet)
SOFTWARE_INFOreserved_requestsactive_requeststotal_countrevokedtask_reservedmaybe_shutdowntask_accepted
task_ready
Persistentz	py-celery)sw_identsw_versw_sysCELERY_WORKER_REVOKES_MAXiP  CELERY_WORKER_SUCCESSFUL_MAXi  CELERY_WORKER_REVOKE_EXPIRESi0*   CELERY_WORKER_SUCCESSFUL_EXPIRES)maxlenexpiresc                  ~   t                                            t                                           t                                           t                                           t
                                           dgt          d d <   t                                           t                                           d S )Nr   )	requestsclearr   r   successful_requestsr   all_total_countr   revoked_stamps     E/var/www/html/env/lib/python3.11/site-packages/celery/worker/state.pyreset_stater'   M   s    NNOAAAMMOOOr%   c                      t           t           durt          t                     t          t          durt          t                    dS dS )z Shutdown if flags have been set.NF)should_terminater	   should_stopr   r$   r%   r&   r   r   X   sN    #(8(E(E.///		 [%=%=[))) 
!	 %=%=r%   c                 >     || j         |             ||            dS )z2Update global state when a task has been reserved.N)id)requestadd_requestadd_reserved_requests      r&   r   r   `   s/     K
G$$$!!!!!r%   c                     |st           } || j        |             ||             || j        di           t           dxx         dz  cc<   dS )z2Update global state when a task has been accepted.   r   N)r"   r,   name)r-   _all_total_countr.   add_active_requestadd_to_total_counts        r&   r   r   h   sq      +*K
G$$$wa()))A!r%   Fc                     |rt                               | j                    || j        d            ||             ||            dS )z)Update global state when a task is ready.N)r!   addr,   )r-   
successfulremove_requestdiscard_active_requestdiscard_reserved_requests        r&   r   r   v   s^      ,
+++N7:t$$$7###W%%%%%r%   C_BENCHCELERY_BENCHC_BENCH_EVERYCELERY_BENCH_EVERY)	monotonic)current_process)memdump
sample_memMainProcessc                  6   t           t          t          d                    t          t           z
                       t          d                    t	          t
                    t          t
                    z                       t                       d S d S d S )Nz- Time spent in benchmark: {!r}z	- Avg: {})bench_first
bench_lastprintformatsumbench_samplelenrB   r$   r%   r&   on_shutdownrM      s    &:+A7>>,. . / / /k((%%L(9(99; ; < < <					 '&+A+Ar%   c                 d    d}t           t                      xa }t          |at          |           S )z-Called when a task is reserved by the worker.N)bench_startr@   rF   
__reserved)r-   nows     r&   r   r      s6      )+K#K'"""r%   c                 f   t           dz  a t           t          z  st                      }|t          z
  }t	          d                    t          |                     t          j                                         |xaa	t                              |           t                       t          |           S )z Called when a task is completed.r1   zG- Time spent processing {} tasks (since first task received): ~{:.4f}s
)	all_countbench_everyr@   rO   rH   rI   sysstdoutflushrG   rK   appendrC   __ready)r-   rQ   diffs      r&   r   r      s    
 	Q	;& 	++C$D //5vk4/H/HJ J JJ'**K*%%%LLLwr%   c                       e Zd ZdZeZeZej	        Z	ej
        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 Zd Zd Zd Zed             Zed             ZdS )r   zStores worker state between restarts.

    This is the persistent data stored by the worker when
    :option:`celery worker --statedb` is enabled.

    Currently only stores revoked task id's.
    FNc                 X    || _         || _        || _        |                                  d S N)statefilenameclockmerge)selfr^   r_   r`   s       r&   __init__zPersistent.__init__   s(    
 


r%   c                 P    | j                             | j        | j        d          S )NT)protocol	writeback)storageopenr_   re   rb   s    r&   rh   zPersistent.open   s,    |  MDMT ! 
 
 	
r%   c                 :    |                      | j                   d S r]   )_merge_withdbri   s    r&   ra   zPersistent.merge   s    !!!!!r%   c                 l    |                      | j                   | j                                         d S r]   )
_sync_withrl   syncri   s    r&   ro   zPersistent.sync   s)       r%   c                 X    | j         r"| j                                         d| _         d S d S )NF)_is_openrl   closeri   s    r&   rr   zPersistent.close   s0    = 	"GMMOOO!DMMM	" 	"r%   c                 V    |                                   |                                  d S r]   )ro   rr   ri   s    r&   savezPersistent.save   s     		

r%   c                 Z    |                      |           |                     |           |S r]   )_merge_revoked_merge_clockrb   ds     r&   rk   zPersistent._merge_with   s/    A!r%   c                     | j                                          |                    d|                     |                     | j                             | j        r| j                                        ndd           |S )N   r   )	__proto__zrevokedr`   )_revoked_taskspurgeupdatecompress_dumpsr`   forwardrx   s     r&   rn   zPersistent._sync_with   s|    !!###	dkk$2E&F&FGG-1Z>TZ'')))Q
 
 	 	 	
 r%   c                 |    | j         r4| j                             |                    d          pd          |d<   d S d S )Nr`   r   )r`   adjustgetrx   s     r&   rw   zPersistent._merge_clock   sE    : 	@**155>>+>Q??AgJJJ	@ 	@r%   c                    	 |                      |d                    nJ# t          $ r= 	 |                     |                    d                     n# t          $ r Y nw xY wY nw xY w| j                                         d S )Nr}   r   )_merge_revoked_v3KeyError_merge_revoked_v2popr~   r   rx   s     r&   rv   zPersistent._merge_revoked   s    	""1Z=1111 	 	 	&&quuY'7'78888   	 	!!#####s2    
A%(AA%
AA%AA%$A%c                     |rA| j                             t          j        |                     |                               d S d S r]   )r~   r   r   loads
decompress)rb   r}   s     r&   r   zPersistent._merge_revoked_v3  sJ     	P&&v|DOOH4M4M'N'NOOOOO	P 	Pr%   c                     t          |t                    s|                     |          S | j                            |           d S r]   )
isinstancer
   _merge_revoked_v1r~   r   )rb   saveds     r&   r   zPersistent._merge_revoked_v2  sE    %,, 	1))%000""5)))))r%   c                 >    | j         j        }|D ]} ||           d S r]   )r~   r7   )rb   r   r7   items       r&   r   zPersistent._merge_revoked_v1  s5    !% 	 	DCIIII	 	r%   c                 8    t          j        || j                  S )N)re   )r   dumpsre   )rb   objs     r&   r   zPersistent._dumps  s    |C$-8888r%   c                     | j         j        S r]   )r^   r   ri   s    r&   r~   zPersistent._revoked_tasks  s    z!!r%   c                 8    d| _         |                                 S )NT)rq   rh   ri   s    r&   rl   zPersistent.db  s    yy{{r%   r]   )__name__
__module____qualname____doc__shelverg   r   re   zlibr   r   rq   rc   rh   ra   ro   rr   rt   rk   rn   rw   rv   r   r   r   r   propertyr~   r   rl   r$   r%   r&   r   r      sP         GH}HJH   
 
 

" " "  " " "
    
  @ @ @	$ 	$ 	$P P P* * *  
9 9 9 " " X"   _  r%   r   )Kr   osplatformr   rU   weakrefr   collectionsr   kombu.serializationr   r   kombu.utils.objectsr   celeryr   celery.exceptionsr   r	   celery.utils.collectionsr
   __all__systemr   intenvironr   REVOKES_MAXSUCCESSFUL_MAXfloatREVOKE_EXPIRESSUCCESSFUL_EXPIRESr   WeakSetr   r   r!   r   r"   r   r#   r*   r)   r'   r   __setitem__r7   r   r   r   r   discardr   r<   r>   atexittimer@   billiard.processrA   celery.utils.debugrB   rC   rS   rF   rO   rG   rT   rK   rP   rY   _nameregisterrM   r   r$   r%   r&   <module>r      s   
 
			   



         7 7 7 7 7 7 7 7 / / / / / /       = = = = = = = = / / / / / / ho  c"*..!<eDDEE RZ^^$BDIIJJ rz~~&DeLLMM U2:>>*LeTTUU   $GO%%  "'/## !j);= = =  gii # *K
@
@
@    * * * '2'8'<" " " " $(&2%4%8%0%7	     &l&5&=(9(A	& & & & *..
#
#
Erz~~n'E'EBJNN?33 AJNN#788A<@B B
 6 MMM00000066666666IKKJKLJG-//		 	 
	
# 
# 
#     $` ` ` ` ` ` ` ` ` `r%   