
    h;                     L    d Z ddlmZ ddlmZ ddlmZmZmZ dZ	 G d d      Z
y	)
zHeartbeat service.

This is the internal thread responsible for sending heartbeat events
at regular intervals (may not be an actual thread).
    )heartbeat_sent)load_average   )SOFTWARE_INFOactive_requestsall_total_count)Heartc                   ,    e Zd ZdZddZddZd Zd Zy)	r	   a@  Timer sending heartbeats at regular intervals.

    Arguments:
        timer (kombu.asynchronous.timer.Timer): Timer to use.
        eventer (celery.events.EventDispatcher): Event dispatcher
            to use.
        interval (float): Time in seconds between sending
            heartbeats.  Default is 2 seconds.
    Nc                 l   || _         || _        t        |xs d      | _        d | _        | j                  j
                  j                  | j                         | j                  j                  j                  | j                         t        j                  rt        j                  | _        y d | _        y )Ng       @)timereventerfloatintervaltref
on_enabledaddstarton_disabledstopr   	receiverssend_send_sent_signal)selfr   r   r   s       S/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/worker/heartbeat.py__init__zHeart.__init__   s    
ho#.	 	##DJJ/  $$TYY/ $2#;#;N 	AE 	    c           	          | j                   | j                  |         | j                  j                  |f| j                  t	        t
              t        d   t               |dt        S )N)senderr   )freqactive	processedloadavgretry)	r   r   r   r   lenr   r   r   r   )r   eventr#   s      r   _sendzHeart._send'   sg    !!-""$"/ t||   2T]](+O(<+:1+=)5',	2
 $12 	2r   c                     | j                   j                  rH| j                  d       | j                  j	                  | j
                  | j                  d      | _        y y )Nzworker-online)zworker-heartbeat)r   enabledr&   r   call_repeatedlyr   r   r   s    r   r   zHeart.start1   sF    <<JJ'

22tzz+@DI  r   c                     | j                   ,| j                  j                  | j                          d | _         | j                  j                  r| j                  dd       y y )Nzworker-offlineF)r#   )r   r   cancelr   r(   r&   r*   s    r   r   z
Heart.stop8   sL    99 JJdii(DI<<JJ'uJ5  r   )N)T)__name__
__module____qualname____doc__r   r&   r   r    r   r   r	   r	      s    G26r   r	   N)r0   celery.signalsr   celery.utils.sysinfor   stater   r   r   __all__r	   r1   r   r   <module>r6      s'   
 * - B B
/6 /6r   