
    /hY              	           d 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 n# e$ r dZY nw xY wdZ	 	 d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d ZdS )zGevent execution pool.    N)	monotonic)timer   )base)Timeout)TaskPool c                 N    |si n|}t          j        | ||||fd |            i|S )Npid)r   apply_target)targetargskwargscallbackaccept_callbackgetpid_s          ]/var/www/html/e360mart/e360mart_env/lib/python3.11/site-packages/celery/concurrency/gevent.pyr   r      sJ    )RR6FVT68_ 0 0!'0-.0 0 0    c
           
          |si n|}	  ||          5   |	| |||| |            fd|fi|
cd d d            S # 1 swxY w Y   d S # |$ r  |d|          cY S w xY w)N	propagateFr	   )r   r   r   r   r   r   timeouttimeout_callbackr   r   rests              r   apply_timeoutr      s     )RR6F0WW 	> 	><fh /> >+2*>8<> >	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>  0 0 0w/////0s.   A 9A =A  =A AAc                   F     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                      j        |i | t                      | _        d S )Nr   )GreenletGreenletExitc                       e Zd Z j        ZdS )!Timer.__init__.<locals>._GreenletN)__name__
__module____qualname__killcancel)r   s   r   	_Greenletr"   /   s        ]FFFr   r(   )	geventr   r    r(   _GreenletExitsuper__init__set_queue)selfr   r   r    r(   r   	__class__s        @r   r,   zTimer.__init__,   s    11111111	# 	# 	# 	# 	# 	# 	# 	# 	# 	# #)$)&)))eer   c                    t          |t                      z
  d          }| j                            ||          }| j                            |           |                    | j                   ||_        ||_	        ||_
        d|_        |S )Nr   F)maxr   r(   spawn_laterr.   addlink_entry_exitentryetaprioritycanceled)r/   r8   r9   r7   r   secsgs          r   _enterzTimer._enter7   s{    3$a((N&&tU33	t   

r   c                     	 |                                  | j                            |           d S # | j                            |           w xY wN)r&   r.   discard)r/   r<   s     r   r6   zTimer._entry_exitB   sL    	#FFHHHK"""""DK""""s	   2 Ac                     | j         }|r<	 |                                                                 n# t          $ r Y nw xY w|:d S d S r?   )r.   popr&   KeyError)r/   queues     r   clearzTimer.clearH   sq     			  """"     	 	 	 	 	s   &2 
??c                     | j         S r?   )r.   r/   s    r   rD   zTimer.queueP   s
    {r   )
r#   r$   r%   r,   r=   r6   rE   propertyrD   __classcell__r0   s   @r   r   r   *   s        	 	 	 	 		 	 	# # #     X    r   r   c                        e Zd ZdZeZd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fdZdd
ZddZddZed             Zed             Zd Zed             Z xZS )r   zGEvent Pool.FTNc                     ddl mm} ddlm} || _        | _        fd| _        || _        |                    d          | _         t                      j
        |i | d S )Nr   )
getcurrent	spawn_raw)Poolc                  2    t                                  S r?   )id)rM   s   r   <lambda>z#TaskPool.__init__.<locals>.<lambda>f   s    b.. r   r   )r)   rM   rN   gevent.poolrO   r   spawn_ngetr   r+   r,   )r/   r   r   rN   rO   rM   r0   s        @r   r,   zTaskPool.__init__a   s    00000000$$$$$$	$.... zz),,$)&)))))r   c                 t    |                      | j                  | _        i | _        | j        j        | _        d S r?   )rO   limit_pool	_pool_mapspawn
_quick_putrG   s    r   on_startzTaskPool.on_startk   s.    YYtz**
**r   c                 J    | j         | j                                          d S d S r?   )rX   joinrG   s    r   on_stopzTaskPool.on_stopp   s*    :!JOO "!r   c	                 "   || j         n|}|                     |          }|                     |rt          n||||||| j        ||	  	        }
|                     t          |
          |
           t          j        t          |
          |
_
        |
S )N)r   r   )r   _make_killable_targetr[   r   r   _add_to_pool_maprQ   types
MethodType
_terminate	terminate)r/   r   r   r   r   r   r   r   r   r   greenlets              r   on_applyzTaskPool.on_applyt   s     #*/$,,w++F33??G#M==#)4?#';Rb # d d 	bllH555"-j(CCr   r   c                 d    | j         j        xj        |z  c_        | j         xj        |z  c_        d S r?   rX   
_semaphorecountersizer/   ns     r   growzTaskPool.grow   1    
%%*%%
1r   c                 d    | j         j        xj        |z  c_        | j         xj        |z  c_        d S r?   rj   rn   s     r   shrinkzTaskPool.shrink   rq   r   c                 h    dd l }|| j        v r$| j        |         }|                    |           d S d S )Nr   )r)   rY   r&   )r/   r   signalr)   rg   s        r   terminate_jobzTaskPool.terminate_job   sD    $.  ~c*HKK!!!!! ! r   c                 *    t          | j                  S r?   )lenrX   rG   s    r   num_processeszTaskPool.num_processes   s    4:r   c                       fd}|S )Nc                  :    ddl m} 	  | i |S # |$ r Y dS w xY w)Nr   )r    )FNN)rg   r    )r   r   r    r   s      r   killable_targetz7TaskPool._make_killable_target.<locals>.killable_target   sS    ------+vt.v... + + +***+s    r	   )r   r|   s   ` r   ra   zTaskPool._make_killable_target   s$    	+ 	+ 	+ 	+ 	+ r   c                     || j         |<   |                    t          j        | j        || j                              d S )N)r   pool_map)rY   r5   	functoolspartial_cleanup_after_job_finish)r/   r   rg   s      r   rb   zTaskPool._add_to_pool_map   sJ    &sd<#PTP^___	
 	
 	
 	
 	
r   c                     ||= d S r?   r	   )rg   r~   r   s      r   r   z"TaskPool._cleanup_after_job_finish   s    SMMMr   )r   r?   )r#   r$   r%   __doc__r   signal_safeis_greentask_join_will_blockrX   rY   r[   r,   r\   r_   r   rh   rp   rs   rv   rH   ry   staticmethodra   rb   r   rI   rJ   s   @r   r   r   U   sC       EKH EIJ* * * * *+ + +
   %)!%t"&\
 
 
 
      " " " "   X   \
 
 
   \    r   r   c                     d S r?   r	   )r/   ru   s     r   re   re      s    Dr   )r	   NNNN)r   r   rc   timer   kombu.asynchronousr   _timer r   r)   r   ImportError__all__r   r   r   BasePoolr   re   r	   r   r   <module>r      sa                . . . . . .         GGG  9=.20 0 0 0  "$"&tT#'#00 0 0 0( ( ( ( (FL ( ( (VQ Q Q Q Qt} Q Q Qh	 	 	 	 	s   % //