HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/flower/__pycache__/events.cpython-310.pyc
o

/weN�@s�ddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZddlmZ
ddlmZmZddlmZddlmZe�e�Zdad	d
�ZGdd�d�ZGd
d�de�ZGdd�dej�ZdS)�N)�Counter)�partial)�
EventReceiver)�State)�Gauge�	Histogram)�PeriodicCallback)�optionscCstdurt�atS�N)�PROMETHEUS_METRICS�PrometheusMetrics�r
r
�F/home/arjun/projects/env/lib/python3.10/site-packages/flower/events.py�get_prometheus_metricssrc@seZdZdd�ZdS)rcCsrtddgd��|_tddddgtjd�|_td	d
ddg�|_tddddg�|_td
ddg�|_	tdddg�|_
dS)N�flower_events_totalzNumber of events)�worker�type�task�flower_task_runtime_secondszTask runtimerr)�buckets�!flower_task_prefetch_time_secondszDThe time the task spent waiting at the celery worker to be executed.�flower_worker_prefetched_tasksz4Number of tasks of given type prefetched at a worker�flower_worker_onlinezWorker online status�1flower_worker_number_of_currently_executing_tasksz/Number of tasks currently executing at a worker)�PrometheusCounter�eventsrr	�task_runtime_metric_buckets�runtimer�
prefetch_time�number_of_prefetched_tasks�
worker_online�*worker_number_of_currently_executing_tasks��selfr
r
r�__init__s.���
�zPrometheusMetrics.__init__N)�__name__�
__module__�__qualname__r$r
r
r
rrsrcs(eZdZ�fdd�Z�fdd�Z�ZS)�EventsStatecs*t�j|i|��t�t�|_t�|_dSr
)�superr$�collections�defaultdictr�counterr�metrics)r#�args�kwargs��	__class__r
rr$<szEventsState.__init__cs�t��|�|d}|d}|j||d7<|�d�r�|d}|j�|�}|�dd�}|s:||jvr:|jp9d}|jj�	|||��
�|�dd	�}|rX|jj�	||��|�|j
}|j}	|d
krq|jsq|	rq|jj�	||��
�|dkr�|js�|r�|	r�|jj�	||��||	�|jj�	||���|dvr�|js�|r�|	r�|jj�	||��d	�|d
kr�|jj�	|��d�|dkr�|jj�	|��d�|�d�}
|
dur�|jj�	|��|
�|dkr�|jj�	|��d	�dSdS)N�hostnamer�ztask-�uuid�name�rrz
task-receivedztask-started)ztask-succeededztask-failedz
worker-onlinezworker-heartbeat�activezworker-offline)r)�eventr,�
startswith�tasks�getr5r-r�labels�incr�observe�started�received�etarr�set�decr r!)r#r8�worker_name�
event_type�task_idr�	task_namer�task_started�
task_received�num_executing_tasksr0r
rr8AsB


�zEventsState.event)r%r&r'r$r8�
__classcell__r
r
r0rr(9sr(c@sNeZdZdZ		ddd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Z	dd�Z
dS)�Eventsi�NFTrc	Ks�tj�|�d|_||_||_||_||_||_d|_	d|_
|jrBt�d|j�t
�|j�}|r5|d|_	|��|rBt|j|�|_
|j	sMtdi|��|_	t|j|j�|_dS)NTzLoading state from '%s'...rr
)�	threading�Threadr$�daemon�io_loop�capp�db�
persistent�
enable_events�state�state_save_timer�logger�debug�shelve�open�closer�
save_stater(�on_enable_events�events_enable_interval�timer)	r#rQrPrRrSrT�state_save_intervalr/rUr
r
rr$us0
�
�zEvents.__init__cCsHtj�|�|jrt�d�|j��|jr"t�d�|j��dSdS)NzStarting enable events timer...zStarting state save timer...)rMrN�startrTrWrXr_rVr"r
r
rra�s


�zEvents.startcCsJ|jr
t�d�|j��|jrt�d�|j��|jr#|��dSdS)NzStopping enable events timer...zStopping state save timer...)rTrWrXr_�stoprVrSr\r"r
r
rrb�s



�zEvents.stopcCsd}	z5|d9}|j���"}t|d|ji|jd�}d}t�d�|jdddd�Wd�n1s2wYWnGttfy[zddl	}Wn
t
yTddl}Ynw|��Yn%t
y}zt�d	||�tj|dd
�t�|�WYd}~nd}~wwq)Nr3T��*)�handlers�appzCapturing events...)�limit�timeout�wakeuprz;Failed to capture events: '%s', trying again in %s seconds.)�exc_info)rQ�
connectionr�on_eventrWrX�capture�KeyboardInterrupt�
SystemExit�_thread�ImportError�thread�interrupt_main�	Exception�error�time�sleep)r#�try_interval�conn�recvrr�er
r
r�run�s<�
�������z
Events.runcCs4t�d|j�tj|jdd�}|j|d<|��dS)NzSaving state to '%s'...�n)�flagr)rWrXrRrYrZrUr[)r#rUr
r
rr\�s
zEvents.save_statecCs|j�d|jjj�dSr
)rP�run_in_executorrQ�controlrTr"r
r
rr]�szEvents.on_enable_eventscCs|j�t|jj|��dSr
)rP�add_callbackrrUr8)r#r8r
r
rrl�szEvents.on_event)NFTr)r%r&r'r^r$rarbr|r\r]rlr
r
r
rrLqs
� 
rL)r*�loggingrYrMrvr�	functoolsr�
celery.eventsr�celery.events.stater�prometheus_clientrrr�tornado.ioloopr�tornado.optionsr	�	getLoggerr%rWrrrr(rNrLr
r
r
r�<module>s&
8