a
    xd<                     @   s   d 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Zd	Zd
Zdd ejD D ]4ZdD ]*Zeeedr`ddlZeeee  q`qXdddZG dd dejZG dd de
jZdS )zEventlet execution pool.    N)	monotonic)timer)signals   )base)TaskPoolz6Celery module with %s imported before eventlet patched)z	billiard.zcelery.zkombu.c                 c   s   | ]}| tr|V  qd S N)
startswith	RACE_MODS).0mod r   S/var/www/html/Ranjet/env/lib/python3.9/site-packages/celery/concurrency/eventlet.py	<genexpr>       r   )thread	threadingsocketr   c                 C   s$   |si n|}t j| ||||| dS )N)pid)r   apply_target)targetargskwargscallbackaccept_callbackgetpidr   r   r   r      s    r   c                       sL   e Zd ZdZ fddZdd Zdd Zdd	 Zd
d Ze	dd Z
  ZS )TimerzEventlet Timer.c                    sB   ddl m} ddlm} t j|i | || _|| _t | _d S )Nr   )spawn_after)GreenletExit)	Zeventlet.greenthreadr   Zgreenletr   super__init___spawn_afterset_queue)selfr   r   r   r   	__class__r   r   r    &   s    zTimer.__init__c                 K   sR   t |t  d}| ||}| j| || j| ||_||_||_	d|_
|S )Nr   F)maxr   r!   r#   addlink_entry_exitentryetaprioritycanceled)r$   r,   r-   r+   r   Zsecsgr   r   r   _enter/   s    zTimer._enterc              	   C   sT   z@z|   W n" | jy0   |  d|_Y n0 W | j| n| j| 0 d S )NT)waitr   cancelr.   r#   discard)r$   r/   r+   r   r   r   r*   :   s    zTimer._entry_exitc              	   C   s:   | j }|r6z|   W q t| jfy2   Y q0 qd S r   )r#   popr2   KeyErrorr   )r$   queuer   r   r   clearD   s    zTimer.clearc                 C   s&   z|   W n | jy    Y n0 d S r   )r2   r   )r$   Ztrefr   r   r   r2   L   s    zTimer.cancelc                 C   s   | j S r   )r#   r$   r   r   r   r6   R   s    zTimer.queue)__name__
__module____qualname____doc__r    r0   r*   r7   r2   propertyr6   __classcell__r   r   r%   r   r   #   s   	
r   c                       sr   e Zd ZdZeZdZdZdZdZdZ	 fddZ
dd Zd	d
 ZdddZdddZdddZ fddZ  ZS )r   zEventlet Task Pool.FTNc                    sR   ddl m  ddlm} || _ j| _ fdd| _ j| _t j	|i | d S )Nr   greenthread)	GreenPoolc                      s   t   S r   )id
getcurrentr   r?   r   r   <lambda>g   r   z#TaskPool.__init__.<locals>.<lambda>)
Zeventletr@   Zeventlet.greenpoolrA   PoolrC   r   spawn_nr   r    )r$   r   r   rA   r%   r?   r   r    b   s    zTaskPool.__init__c                 C   s4   |  | j| _tjj| d | jj| _tjj| _	d S N)sender)
rE   limit_poolr   Zeventlet_pool_startedsendrF   
_quick_putZeventlet_pool_apply_quick_apply_sigr8   r   r   r   on_startl   s    
zTaskPool.on_startc                 C   s4   t jj| d | jd ur"| j  t jj| d d S rG   )r   Zeventlet_pool_preshutdownrK   rJ   ZwaitallZeventlet_pool_postshutdownr8   r   r   r   on_stopr   s    

zTaskPool.on_stopc              	   K   s.   | j | |||d | t|||||| j d S )N)rH   r   r   r   )rM   rL   r   r   )r$   r   r   r   r   r   _r   r   r   on_applyx   s    zTaskPool.on_applyr   c                 C   s    | j | }| j| || _ d S r   rI   rJ   resizer$   nrI   r   r   r   grow   s    
zTaskPool.growc                 C   s    | j | }| j| || _ d S r   rR   rT   r   r   r   shrink   s    
zTaskPool.shrinkc                    s.   t   }|| j| j | j d |S )N)zmax-concurrencyzfree-threadszrunning-threads)r   	_get_infoupdaterI   rJ   freeZrunning)r$   infor%   r   r   rX      s    
zTaskPool._get_info)NNNN)r   )r   )r9   r:   r;   r<   r   Zsignal_safeZis_greenZtask_join_will_blockrJ   rL   r    rN   rO   rQ   rV   rW   rX   r>   r   r   r%   r   r   W   s    
  
	

r   )r   NNNN)r<   systimer   Zkombu.asynchronousr   Z_timerZceleryr    r   __all__ZW_RACEr
   modulesr   ZsidegetattrwarningswarnRuntimeWarningr   r   ZBasePoolr   r   r   r   r   <module>   s$     
4