
    `f;                     T    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
d	S )
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dS )
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                 *   || _         || _        t          |pd          | _        d | _        | j        j                            | j                   | j        j                            | j	                   t          j        rt          j        nd | _        d S )Ng       @)timereventerfloatintervaltref
on_enabledaddstarton_disabledstopr   	receiverssend_send_sent_signal)selfr   r   r   s       I/var/www/html/env/lib/python3.11/site-packages/celery/worker/heartbeat.py__init__zHeart.__init__   s    
ho#..	 	##DJ/// $$TY/// $2#;EN 	    Tc           	          | 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'   sr    !-""$"/// t|  2T](+O(<(<+:1+=)5',	2 2
 $12 2 	2r   c                     | j         j        rB|                     d           | j                            | j        | j        d          | _        d S d S )Nzworker-online)zworker-heartbeat)r   enabledr&   r   call_repeatedlyr   r   r   s    r   r   zHeart.start1   sT    < 	JJ'''
22tz+@ DIII	 	r   c                     | j         &| j                            | j                    d | _         | j        j        r|                     dd           d S d S )Nzworker-offlineF)r#   )r   r   cancelr   r(   r&   r*   s    r   r   z
Heart.stop8   s]    9 Jdi(((DI< 	6JJ'uJ55555	6 	6r   )N)T)__name__
__module____qualname____doc__r   r&   r   r    r   r   r	   r	      sh         G G G G2 2 2 2  6 6 6 6 6r   r	   N)r0   celery.signalsr   celery.utils.sysinfor   stater   r   r   __all__r	   r1   r   r   <module>r6      s    
 * ) ) ) ) ) - - - - - - B B B B B B B B B B
/6 /6 /6 /6 /6 /6 /6 /6 /6 /6r   