
    `f                         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dS )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dS )r   zRecord event snapshots.Nshutter_signalstate)nameproviding_argscleanup_signal)r   F      ?      @c                     t          |          | _        || _        || _        || _        |p| j        pt                      | _        t          | _        |ot          t          |                    | _
        d S N)r   appr   freqcleanup_freqtimerr
   loggerr   r	   maxrate)selfr   r   r   r   r   r   s          H/var/www/html/env/lib/python3.11/site-packages/celery/events/snapshot.py__init__zPolaroid.__init__#   sc    !#&&
	(3dj3EGG
=;tG}}#=#=    c                     | j                             | j        | j                  | _        | j                             | j        | j                  | _        d S r   )r   call_repeatedlyr   capture_trefr   cleanup_ctrefr   s    r   installzPolaroid.install-   sF    Z//	4<HH
j00t|
 
r    c                     d S r    )r   r   s     r   
on_shutterzPolaroid.on_shutter3       r    c                     d S r   r*   r'   s    r   
on_cleanupzPolaroid.on_cleanup6   r,   r    c                     t                               d           | j                            | j                   |                                  d S )NzCleanup: Running...sender)r   debugr   sendr   r.   r'   s    r   r%   zPolaroid.cleanup9   sG    *+++  
 333r    c                     | j         | j                                         r\t                              d| j                   | j                            | j                   |                     | j                   d S d S )NzShutter: %sr0   )r   can_consumer   r2   r   r   r3   r+   r'   s    r   shutterzPolaroid.shutter>   sq    <4<#;#;#=#=LL
333$$DJ$777OODJ'''''  r    c                 R    | j                             | j        | j                   d S )N)clear_after)r   freeze_whiler6   r8   r'   s    r   r#   zPolaroid.captureD   s(    
$:JKKKKKr    c                     | j         r-|                                   | j                                          | j        r| j                                         d S d S r   )r$   cancelr&   r'   s    r   r;   zPolaroid.cancelG   s[    : 	 JJLLLJ; 	!K     	! 	!r    c                 .    |                                   | S r   )r(   r'   s    r   	__enter__zPolaroid.__enter__N   s    r    c                 .    |                                   d S r   )r;   )r   exc_infos     r   __exit__zPolaroid.__exit__R   s    r    )r   Nr   NN)__name__
__module____qualname____doc__r   r   r   r   r8   r$   r&   r   r(   r+   r.   r%   r6   r#   r;   r=   r@   r*   r    r   r   r      s        !!EV!17)LLLNV!1222NKEF046:> > > >
 
 
      
( ( (L L L! ! !      r    r   r   Nc                    t          |          }|rt          j        |           |j                            ||           t          d|  d| d           |j                                        }	t          | |	||||          }
|
	                                 |
                                }|j                            |d|	j        i          }	 	 |                    d           n# t          $ r t          w xY w	 |
                                 |                                 dS # |
                                 |                                 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
SystemExitr;   close)camerar   r   loglevellogfilepidfiler   r   kwargsr   camconnrecvs                r   r   r   V   s`    

C * )))G##Hg666	
JV
J
JT
J
J
JKKKJE
fe4%U4 4 4CKKMMM""$$D:tsEK.@AAD	LLtL$$$$  	 	 		 % 	



 	



s   C) (D) )C;;D) )*E)r   Nr   NNNN)rD   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>rf      s    + * * * * *       % % % % % % ( ( ( ( ( ( , , , , , , ' ' ' ' ' ' " " " " " " % % % % % %
	N	#	#; ; ; ; ; ; ; ;| 456:     r    