o
    wvXj•  ã                   @   sX   d Z ddlmZm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	eƒZd
S )z�Heartbeat service.

This is the internal thread responsible for sending heartbeat events
at regular intervals (may not be an actual thread).
é    )Úabsolute_importÚunicode_literals)Ú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   úT/var/www/html/myproject/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   4   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   ;   s   
ÿz
Heart.stop)N)T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   r   r   r   r   r   r   r
      s    



r
   N)r,   Ú
__future__r   r   Úcelery.signalsr   Úcelery.utils.sysinfor   Ústater   r   r	   Ú__all__Úobjectr
   r   r   r   r   Ú<module>   s   