o
    ȕh                     @   s   d dl Z d dlZd dlm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 dd
lmZ eeZe jd  dkrde jd dkrde jdrdd dlZee  dd ZG dd dejjZ dS )    N)ThreadPoolExecutor)ioloop)
HTTPServer)url   handlers)Events)	Inspector)default_options      winc                 C   sN   t | trtd|d| jj| j| j| jS d|d| d | d fS )Nz/{}{}/r   r   )	
isinstancer   formatstripregexpatternhandler_classkwargsname)handler
url_prefix r   G/var/www/Befach/backend/venv/lib/python3.10/site-packages/flower/app.pyrewrite_handler   s
   
r   c                       s\   e Zd ZeZdZ		d fdd	Zdd Zdd Ze	dd	 Z
e	d
d ZdddZ  ZS )FlowerNc              
      s   t } d ur jr fdd|D }|j|d t jd	i |  p$t| _|p,tj	 | _
|dd | _|p:t | _| jj  | j| jd| _| j
| j t| j
| j| jjd | _|pyt| j| jj| jj| jj| jj| j
| jj| jjd| _d| _ d S )
Nc                    s   g | ]}t | jqS r   )r   r   ).0hoptionsr   r   
<listcomp>*   s    z#Flower.__init__.<locals>.<listcomp>r   ssl_options)max_workersg     @@)db
persistentstate_save_intervalenable_eventsio_loopmax_workers_in_memorymax_tasks_in_memoryFr   )!default_handlersr   updatesuper__init__r   r!   r   IOLoopinstancer)   getr#   celeryCelerycapploaderimport_default_modulespool_executor_clsr$   executorset_default_executorr
   inspect_timeout	inspectorr	   r%   r&   r'   r(   	max_taskseventsstarted)selfr!   r5   r>   r)   r   r   	__class__r    r   r/   &   s0   

	zFlower.__init__c                 C   s~   | j   | jjs| j| jj| jj| j| jjd nddl	m
} t| }|| jjdd}|| d| _|   | j  d S )N)addressr#   xheadersr   )bind_unix_socketi  )modeT)r>   startr!   unix_socketlistenportrC   r#   rD   tornado.netutilrE   r   
add_socketr?   update_workersr)   )r@   rE   serversocketr   r   r   rG   D   s   

zFlower.startc                 C   sJ   | j r#| j  td | jjdd td | j  d| _ d S d S )NzStopping executors...F)waitzStopping event loop...)r?   r>   stoploggingdebugr9   shutdownr)   r@   r   r   r   rQ   U   s   




zFlower.stopc                 C   s   t | j jdd S )Ndriver_type)getattrr5   
connection	transportrU   r   r   r   rY   ^   s   zFlower.transportc                 C   s   | j jS N)r<   workersrU   r   r   r   r[   b   s   zFlower.workersc                 C   s   | j |S rZ   )r<   inspect)r@   
workernamer   r   r   rM   f   s   zFlower.update_workers)NNNNrZ   )__name__
__module____qualname__r   r8   r$   r/   rG   rQ   propertyrY   r[   rM   __classcell__r   r   rA   r   r   "   s    	

r   )!sysrR   concurrent.futuresr   r3   tornado.webtornador   tornado.httpserverr   r   urlsr   r,   r>   r	   r<   r
   r!   r   	getLoggerr^   loggerversion_infoplatform
startswithasyncioset_event_loop_policyWindowsSelectorEventLoopPolicyr   webApplicationr   r   r   r   r   <module>   s$    
(