
    <#(iN                        d dl Z d dlZd dlZd dlZd dlZd dl mZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZ d dlmZ  ej        e          Zdad	 Z G d
 d          Z G d de          Z G d dej                  ZdS )    N)Counter)partial)EventReceiver)State)Gauge	Histogram)PeriodicCallback)optionsc                  :    t           t                      a t           S N)PROMETHEUS_METRICSPrometheusMetrics     M/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/flower/events.pyget_prometheus_metricsr      s    !.00r   c                       e Zd Zd ZdS )r   c                 :   t          ddg d          | _        t          ddddgt          j                  | _        t          d	d
ddg          | _        t          ddddg          | _        t          dddg          | _	        t          dddg          | _
        d S )Nflower_events_totalzNumber of events)workertypetaskflower_task_runtime_secondszTask runtimer   r   )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_onlinezWorker online status1flower_worker_number_of_currently_executing_tasksz/Number of tasks currently executing at a worker)PrometheusCountereventsr   r
   task_runtime_metric_bucketsruntimer   prefetch_timenumber_of_prefetched_tasksworker_online*worker_number_of_currently_executing_tasksselfs    r   __init__zPrometheusMetrics.__init__   s    '(=?QSmSmSmnn )v7	
 
 
 #/Rv
 

 +0,Bv+
 +
'
 ##9;QT\S]^^:??=J;
 ;
777r   N)__name__
__module____qualname__r)   r   r   r   r   r      s#        
 
 
 
 
r   r   c                   (     e Zd Z fdZ fdZ xZS )EventsStatec                      t                      j        |i | t          j        t                    | _        t                      | _        d S r   )superr)   collectionsdefaultdictr   counterr   metrics)r(   argskwargs	__class__s      r   r)   zEventsState.__init__<   sB    $)&)))".w77-//r   c                 Z   t                                          |           |d         }|d         }| j        |         |xx         dz  cc<   |                    d          r|d         }| j                            |          }|                    dd          }|s|| j        v r	|j        pd}| j        j        	                    |||          
                                 |                    dd	          }|r3| j        j        	                    ||                              |           |j        }|j        }	|d
k    r;|j        s4|	r2| j        j        	                    ||          
                                 |dk    rs|j        sl|rj|	rh| j        j        	                    ||                              ||	z
             | j        j        	                    ||                                           |dv r>|j        s7|r5|	r3| j        j        	                    ||                              d	           |dk    r2| j        j        	                    |                              d           |dk    r{| j        j        	                    |                              d           |                    d          }
|
2| j        j        	                    |                              |
           |dk    r4| j        j        	                    |                              d	           d S d S )Nhostnamer      ztask-uuidname r"   r   ztask-receivedztask-started)ztask-succeededztask-failedzworker-onlinezworker-heartbeatactivezworker-offline)r0   eventr3   
startswithtasksgetr<   r4   r    labelsincr"   observestartedreceivedetar$   r#   setdecr%   r&   )r(   r?   worker_name
event_typetask_idr   	task_namer"   task_startedtask_receivednum_executing_tasksr7   s              r   r?   zEventsState.eventA   s   eJ'6]
[!*---2---  )) 	QFmG:>>'**D		&"--I ,DJ!6!6 IO	L&&{J	JJNNPPPii	1--G U$++KCCKKGTTT<L MM_,,TX,-,7>>{IVVZZ\\\^++DH++R_+*11+yIIMMl]jNjkkk7>>{IVVZZ\\\>>>tx>T`>er>*11+yIIMMaPPP((L&--k::>>qAAA+++L&--k::>>qAAA"'))H"5"5".GNN{[[__`sttt)))L&--k::>>qAAAAA *)r   )r*   r+   r,   r)   r?   __classcell__)r7   s   @r   r.   r.   9   sZ        0 0 0 0 0
-B -B -B -B -B -B -B -B -Br   r.   c                   B    e Zd ZdZ	 	 ddZd Zd Zd	 Zd
 Zd Z	d Z
dS )Eventsi  NFTr   c                     t           j                            |            d| _        || _        || _        || _        || _        || _        d | _	        d | _
        | j        rxt                              d| j                   t          j        | j                  }|r|d         | _	        |                                 |rt!          | j        |          | _
        | j	        st%          di || _	        t!          | j        | j                  | _        d S )NTzLoading state from '%s'...r    r   )	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(   rZ   rY   r[   r\   r]   state_save_intervalr6   r^   s	            r   r)   zEvents.__init__u   s    	!!$'''	$*
 $? 		NLL5tw???K((E -"8_
KKMMM" N(89L)N )N% z 	/$..v..DJ%d&;&*&AC C


r   c                 0   t           j                            |            | j        r3t                              d           | j                                         | j        r5t                              d           | j                                         d S d S )NzStarting enable events timer...zStarting state save timer...)rV   rW   startr]   r`   ra   rh   r_   r'   s    r   rk   zEvents.start   s    t$$$ 	LL:;;;J  	*LL7888!'')))))	* 	*r   c                 (   | j         r3t                              d           | j                                         | j        r3t                              d           | j                                         | j        r|                                  d S d S )NzStopping enable events timer...zStopping state save timer...)r]   r`   ra   rh   stopr_   r\   re   r'   s    r   rm   zEvents.stop   s     	LL:;;;JOO  	)LL7888!&&(((? 	OO	 	r   c                 f   d}	 	 |dz  }| j                                         5 }t          |d| j        i| j                   }d}t                              d           |                    d d d           d d d            n# 1 swxY w Y   n# t          t          f$ r1 	 dd l	}n# t          $ r dd l}Y nw xY w|                                 Y nbt          $ rV}t                              d	||           t                              |d
           t          j        |           Y d }~nd }~ww xY w/)Nr:   T   *)handlersappzCapturing events...)limittimeoutwakeupr   z;Failed to capture events: '%s', trying again in %s seconds.)exc_info)rZ   
connectionr   on_eventr`   ra   captureKeyboardInterrupt
SystemExit_threadImportErrorthreadinterrupt_main	Exceptionerrortimesleep)r(   try_intervalconnrecvr~   es         r   runz
Events.run   s   	))!Y))++ Ht(362F-1Y8 8 8D $%LLL!6777LLtT$LGGGH H H H H H H H H H H H H H H &z2 ( ( (",,,,," " " "!MMMMM"%%''''' ) ) ) ;. . . Q...
<(((((((()#	)sf   B AB6B BB 	B
B D. B%$D.%B63D.5B66D.	D.AD))D.c                     t                               d| j                   t          j        | j        d          }| j        |d<   |                                 d S )NzSaving state to '%s'...n)flagr    )r`   ra   r[   rb   rc   r^   rd   )r(   r^   s     r   re   zEvents.save_state   sK    .888DG#...*hr   c                 Z    | j                             d | j        j        j                   d S r   )rY   run_in_executorrZ   controlr]   r'   s    r   rf   zEvents.on_enable_events   s*     	$$T49+<+JKKKKKr   c                 j    | j                             t          | j        j        |                     d S r   )rY   add_callbackr   r^   r?   )r(   r?   s     r   rx   zEvents.on_event   s-    !!'$**:E"B"BCCCCCr   )NFTr   )r*   r+   r,   rg   r)   rk   rm   r   re   rf   rx   r   r   r   rT   rT   q   s        ! ;@9:C C C C@* * *
 
 
) ) )4  L L L
D D D D Dr   rT   )r1   loggingrb   rV   r   r   	functoolsr   celery.eventsr   celery.events.stater   prometheus_clientr   r   r   tornado.ioloopr	   tornado.optionsr
   	getLoggerr*   r`   r   r   r   r.   rW   rT   r   r   r   <module>r      s                          ' ' ' ' ' ' % % % % % % : : : : : : . . . . . . . . + + + + + + # # # # # #		8	$	$   
 
 
 
 
 
 
 
85B 5B 5B 5B 5B% 5B 5B 5BpaD aD aD aD aDY aD aD aD aD aDr   