
    >i;              	           d Z ddlmZ ddlmZ ddlmZ 	 ddlm	Z	 dZd	dddddde	ej                  f	d
Z G d dej                        Z G d dej                        Zy# e
$ r dZ	Y Mw xY w)zGevent execution pool.    )	monotonic)timer   )base)TimeoutN)TaskPool c
           	          |si n|}	  ||      5   |	| |||||fd|fi|
cd d d        S # 1 sw Y   y xY w# |$ r  |d|      cY S w xY w)N	propagateFr	   )targetargskwargscallbackaccept_callbackpidtimeouttimeout_callbackr   apply_targetrests              u/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/celery/concurrency/gevent.pyapply_timeoutr      ss     R6F0W 	>fh />+2*>8<>	> 	> 	>  0w//0s#   7 +	7 47 7 AAc                   @     e Zd Z fdZd Zd Zd Zed        Z xZ	S )Timerc                     ddl mm}  G fdd      }|| _        || _        t        |   |i | t               | _        y )Nr   )GreenletGreenletExitc                   (    e Zd ZW  j                  Zy)!Timer.__init__.<locals>._GreenletN)__name__
__module____qualname__killcancel)r   s   r   	_Greenletr   &   s    ]]F    r$   )	geventr   r   r$   _GreenletExitsuper__init__set_queue)selfr   r   r   r$   r   	__class__s        @r   r)   zTimer.__init__#   s>    1	# 	# #)$)&)er%   c                    t        |t               z
  d      }| j                  j                  ||      }| j                  j                  |       |j                  | j                         ||_        ||_	        ||_
        d|_        |S )Nr   F)maxr   r$   spawn_laterr+   addlink_entry_exitentryetaprioritycanceled)r,   r5   r6   r4   r   secsgs          r   _enterzTimer._enter.   sn    3$a(NN&&tU3	t 

r%   c                     	 |j                          | j                  j                  |       y # | j                  j                  |       w xY wN)r"   r+   discard)r,   r9   s     r   r3   zTimer._entry_exit9   s5    	#FFHKK"DKK"s	   . Ac                     | j                   }|r#	 |j                         j                          |r"y y # t        $ r Y w xY wr<   )r+   popr"   KeyError)r,   queues     r   clearzTimer.clear?   s>    		  "   s   3 	??c                     | j                   S r<   )r+   r,   s    r   rA   zTimer.queueG   s    {{r%   )
r   r    r!   r)   r:   r3   rB   propertyrA   __classcell__r-   s   @r   r   r   !   s+    		#  r%   r   c                        e Zd ZdZeZdZdZdZdZdZ	 fdZ
d Zd Zddddddej                  fdZdd	Zdd
Zed        Z xZS )r   zGEvent Pool.FTNc                     ddl m} ddlm} || _        || _        |j                  d      | _        t        |    |i | y )Nr   )	spawn_raw)Poolr   )	r&   rJ   gevent.poolrK   spawn_ngetr   r(   r)   )r,   r   r   rJ   rK   r-   s        r   r)   zTaskPool.__init__W   s9    $$	 zz),$)&)r%   c                 z    | j                  | j                        | _        | j                  j                  | _        y r<   )rK   limit_poolspawn
_quick_putrD   s    r   on_startzTaskPool.on_start_   s'    YYtzz*
****r%   c                 R    | j                   | j                   j                          y y r<   )rQ   joinrD   s    r   on_stopzTaskPool.on_stopc   s    ::!JJOO "r%   c	           
      d    || j                   n|}| j                  |rt        n||||||||      S )N)r   r   )r   rS   r   )
r,   r   r   r   r   r   r   r   r   _s
             r   on_applyzTaskPool.on_applyg   sB     #*/$,,w}\%tVX'.0@  B 	Br%   c                     | j                   j                  xj                  |z  c_        | j                   xj                  |z  c_        y r<   rQ   
_semaphorecountersizer,   ns     r   growzTaskPool.growp   /    

%%*%

1r%   c                     | j                   j                  xj                  |z  c_        | j                   xj                  |z  c_        y r<   r\   r`   s     r   shrinkzTaskPool.shrinkt   rc   r%   c                 ,    t        | j                        S r<   )lenrQ   rD   s    r   num_processeszTaskPool.num_processesx   s    4::r%   )r   )r   r    r!   __doc__r   signal_safeis_greentask_join_will_blockrQ   rS   r)   rT   rW   r   r   rZ   rb   re   rE   rh   rF   rG   s   @r   r   r   L   sq    EKH EJ*+ %)!%t"&T5F5FB  r%   r   )ri   timer   kombu.asynchronousr   _timer r   r&   r   ImportError__all__r   r   r   BasePoolr   r	   r%   r   <module>rt      s{      .    "$"&D$#'#000(FLL (V.t}} .E  Gs   A   A*)A*