
    h!                        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j2                  j5                  dd            Z eej2                  j5                  dd            Z eej2                  j5                  dd            Z eej2                  j5                  dd            Zi Z  ejB                         Z" ejB                         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 jZ                  e"j\                  fdZ/de jZ                  e#j\                  e%j`                  fdZ1de jd                  e#jf                  e"jf                  fdZ4ej2                  j5                  d      xs ej2                  j5                  d      Z5 eej2                  j5                  d      xs ej2                  j5                  d      xs d      Z6e5rTd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;       j                  d!k(  re7j                  d"        ZId# Z/d$ Z4 G d% d&      ZJy)'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                  0   t         j                          t        j                          t        j                          t        j                          t
        j                          dgt        d d  t        j                          t        j                          y )Nr   )	requestsclearr   r   successful_requestsr   all_total_countr   revoked_stamps     O/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/worker/state.pyreset_stater'   M   s]    NNOAMMOr%   c                  z    t         t         durt        t               t        t        durt        t              yy)z Shutdown if flags have been set.NF)should_terminater	   should_stopr   r$   r%   r&   r   r   X   s<    #(8(E.//		 [%=[)) &>	 r%   c                 :     || j                   |         ||        y)z2Update global state when a task has been reserved.N)id)requestadd_requestadd_reserved_requests      r&   r   r   `   s     

G$!r%   c                     |st         } || j                  |         ||         || j                  di       t         dxx   dz  cc<   y)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   sD     *

G$wa()A!r%   Fc                     |rt         j                  | j                          || j                  d        ||         ||        y)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   s7     

+7::t$7#W%r%   C_BENCHCELERY_BENCHC_BENCH_EVERYCELERY_BENCH_EVERY)	monotonic)current_process)memdump
sample_memMainProcessc                      t         nt        gt        dj                  t        t         z
               t        dj                  t	        t
              t        t
              z               t                y y y )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; <	 ,B&r%   c                 P    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      s1      )+K#K'""r%   c                 *   t         dz  a t         t        z  sst               }|t        z
  }t	        dj                  t        |             t        j                  j                          |xaa	t        j                  |       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      sx    
 	Q	;&+C$D //5vk4/HJJJ'**K*%L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y)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                 N    || _         || _        || _        | j                          y N)statefilenameclockmerge)selfr^   r_   r`   s       r&   __init__zPersistent.__init__   s     
 


r%   c                 f    | j                   j                  | j                  | j                  d      S )NT)protocol	writeback)storageopenr_   re   rb   s    r&   rh   zPersistent.open   s-    ||  MMDMMT ! 
 	
r%   c                 :    | j                  | j                         y r]   )_merge_withdbri   s    r&   ra   zPersistent.merge   s    !r%   c                 n    | j                  | j                         | j                  j                          y r]   )
_sync_withrl   syncri   s    r&   ro   zPersistent.sync   s     r%   c                 `    | j                   r"| j                  j                          d| _         y y )NF)_is_openrl   closeri   s    r&   rr   zPersistent.close   s"    ==GGMMO!DM r%   c                 D    | j                          | j                          y r]   )ro   rr   ri   s    r&   savezPersistent.save   s    		

r%   c                 J    | j                  |       | j                  |       |S r]   )_merge_revoked_merge_clockrb   ds     r&   rk   zPersistent._merge_with   s#    A!r%   c                     | j                   j                          |j                  d| j                  | j	                  | j                               | j
                  r| j
                  j                         ndd       |S )N   r   )	__proto__zrevokedr`   )_revoked_taskspurgeupdatecompress_dumpsr`   forwardrx   s     r&   rn   zPersistent._sync_with   sb    !!#	dkk$2E2E&FG-1ZZTZZ'')Q
 	
 r%   c                     | j                   r2| j                   j                  |j                  d      xs d      |d<   y y )Nr`   r   )r`   adjustgetrx   s     r&   rw   zPersistent._merge_clock   s3    ::**155>+>Q?AgJ r%   c                     	 | j                  |d          | j                  j                          y # t        $ r4 	 | j                  |j                  d             n# t        $ r Y nw xY wY Ww xY w)Nr}   r   )_merge_revoked_v3KeyError_merge_revoked_v2popr~   r   rx   s     r&   rv   zPersistent._merge_revoked   sl    	""1Z=1 	!!#  	&&quuY'78 	s2   1 	A. AA.	A(%A.'A((A.-A.c                     |r>| j                   j                  t        j                  | j	                  |                   y y r]   )r~   r   r   loads
decompress)rb   r}   s     r&   r   zPersistent._merge_revoked_v3  s0    &&v||DOOH4M'NO r%   c                 |    t        |t              s| j                  |      S | j                  j	                  |       y r]   )
isinstancer
   _merge_revoked_v1r~   r   )rb   saveds     r&   r   zPersistent._merge_revoked_v2  s1    %,))%00""5)r%   c                 N    | j                   j                  }|D ]
  } ||        y r]   )r~   r7   )rb   r   r7   items       r&   r   zPersistent._merge_revoked_v1  s$    !!%%DI r%   c                 D    t        j                  || j                        S )N)re   )r   dumpsre   )rb   objs     r&   r   zPersistent._dumps  s    ||C$--88r%   c                 .    | j                   j                  S r]   )r^   r   ri   s    r&   r~   zPersistent._revoked_tasks  s    zz!!!r%   c                 0    d| _         | j                         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      s     GH}}HJH

""

@	$P*
9 " "  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      sn  
 
   
    7 /  = / hoo "**..!<eDE RZZ^^$BDIJ rzz~~&DeLM 2::>>*LeTU   $GOO%  "'//# !);=  i # K
@  * '22'8'<'<" $(&22%4%8%8%0%7%7	  &ll&5&=&=(9(A(A	& **..
#
Erzz~~n'EBJJNN?3 AJJNN#78A<@B
06IKKJKLJG-/		 
	
# $` `r%   