o
    Df;                     @   sF   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 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                   @   s4   e Zd ZdZdddZdddZdd	 Zd
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                 C   s\   || _ || _t|p
d| _d | _| jj| j | jj| j	 t
jr)t
j| _d S d | _d S )Ng       @)timereventerfloatintervaltref
on_enabledaddstarton_disabledstopr   	receiverssend_send_sent_signal)selfr	   r
   r    r   P/home/ubuntu/webapp/venv/lib/python3.10/site-packages/celery/worker/heartbeat.py__init__   s   
zHeart.__init__Tc                 C   sB   | j d ur| j | d | 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   r   r   r   _send'   s   
zHeart._sendc                 C   s0   | j jr| d | j| j| jd| _d S d S )Nzworker-online)zworker-heartbeat)r
   enabledr"   r	   call_repeatedlyr   r   r   r   r   r   r   1   s   


zHeart.startc                 C   s<   | j d ur| j| j  d | _ | jjr| jddd d S d S )Nzworker-offlineF)r   )r   r	   cancelr
   r#   r"   r%   r   r   r   r   8   s   
z
Heart.stop)N)T)__name__
__module____qualname____doc__r   r"   r   r   r   r   r   r   r      s    



r   N)r*   celery.signalsr   celery.utils.sysinfor   stater   r   r   __all__r   r   r   r   r   <module>   s    