
    h                         d 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 dd	lmZ d
Z ed      Z G d d      Z	 	 ddZy)aS  Periodically store events in a database.

Consuming the events as a stream isn't always suitable
so this module implements a system to take snapshots of the
state of a cluster at regular intervals.  There's a full
implementation of this writing the snapshots to a database
in :mod:`djcelery.snapshots` in the `django-celery` distribution.
    )TokenBucket)	platforms)app_or_default)Signal)instantiate)
get_logger)rate)Timer)Polaroidevcamzcelery.evcamc                       e Zd ZdZdZ eddh      Z ed      ZdZdZ	dZ
	 	 dd	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)r   zRecord event snapshots.Nshutter_signalstate)nameproviding_argscleanup_signal)r   Fc                     t        |      | _        || _        || _        || _        |xs | j
                  xs
 t               | _        t        | _        |xr t        t        |            | _
        y N)r   appr   freqcleanup_freqtimerr
   loggerr   r	   maxrate)selfr   r   r   r   r   r   s          R/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/events/snapshot.py__init__zPolaroid.__init__#   sW    !#&
	(3djj3EG
=;tG}#=    c                     | j                   j                  | j                  | j                        | _        | j                   j                  | j
                  | j                        | _        y r   )r   call_repeatedlyr   capture_trefr   cleanup_ctrefr   s    r   installzPolaroid.install-   sG    ZZ//		4<<H
jj00t||
r   c                      y r    )r   r   s     r   
on_shutterzPolaroid.on_shutter3       r   c                      y r   r(   r%   s    r   
on_cleanupzPolaroid.on_cleanup6   r*   r   c                     t         j                  d       | j                  j                  | j                         | j                          y )NzCleanup: Running...sender)r   debugr   sendr   r,   r%   s    r   r#   zPolaroid.cleanup9   s4    *+  

 3r   c                    | j                   | j                   j                         rbt        j                  d| j                         | j
                  j                  | j                         | j                  | j                         y y )NzShutter: %sr.   )r   can_consumer   r0   r   r   r1   r)   r%   s    r   shutterzPolaroid.shutter>   s]    <<4<<#;#;#=LL

3$$DJJ$7OODJJ' $>r   c                 f    | j                   j                  | j                  | j                         y )N)clear_after)r   freeze_whiler4   r6   r%   s    r   r!   zPolaroid.captureD   s#    

$:J:JKr   c                     | j                   r*| j                          | j                   j                          | j                  r| j                  j                          y y r   )r"   cancelr$   r%   s    r   r9   zPolaroid.cancelG   s>    ::JJLJJ;;KK  r   c                 &    | j                          | S r   )r&   r%   s    r   	__enter__zPolaroid.__enter__N   s    r   c                 $    | j                          y r   )r9   )r   exc_infos     r   __exit__zPolaroid.__exit__R   s    r   )      ?Ng      @NN)__name__
__module____qualname____doc__r   r   r   r   r6   r"   r$   r   r&   r)   r,   r#   r4   r!   r9   r;   r>   r(   r   r   r   r      sl    !E!17)LN!12NKEF046:>

(L!r   r   Nc                 f   t        |      }|rt        j                  |       |j                  j	                  ||       t        d|  d| d       |j                  j                         }	t        | |	||||      }
|
j                          |j                         }|j                  j                  |d|	j                  i      }	 	 |j                  d       	 |
j!                          |j#                          y# t        $ r t        w xY w# |
j!                          |j#                          w xY w)	zStart snapshot recorder.z -> evcam: Taking snapshots with z (every z secs.))r   r   r   r   *)handlersN)limit)r   r   create_pidlocklogsetup_logging_subsystemprinteventsStater   r&   connection_for_readReceivereventr!   KeyboardInterrupt
SystemExitr9   close)camerar   r   loglevellogfilepidfiler   r   kwargsr   camconnrecvs                r   r   r   V   s    
C  )GG##Hg6	,VHHTF'
JKJJE
fe4%U4CKKM""$D::tsEKK.@AD	LLtL$ 	



	 ! 		 	



s   C; ;DD "D0)r?   Nr   NNNN)rC   kombu.utils.limitsr   celeryr   
celery.appr   celery.utils.dispatchr   celery.utils.importsr   celery.utils.logr   celery.utils.timer	   celery.utils.timer2r
   __all__r   r   r   r(   r   r   <module>re      sK    +  % ( , ' " %
	N	#; ;| 456:r   