o
    wvXjý  ã                   @   sd   d Z ddlmZmZ ddlZddlmZmZ ddlm	Z	m
Z
 dZG dd	„ d	eƒZG d
d„ de	ƒZdS )zThread execution pool.é    )Úabsolute_importÚunicode_literalsN)ÚThreadPoolExecutorÚwaité   )ÚBasePoolÚapply_target)ÚTaskPoolc                   @   s   e Zd Zdd„ Zddd„ZdS )ÚApplyResultc                 C   s   || _ | j j| _d S ©N)ÚfÚresultÚget)ÚselfÚfuture© r   úV/var/www/html/myproject/venv/lib/python3.10/site-packages/celery/concurrency/thread.pyÚ__init__   s   zApplyResult.__init__Nc                 C   s   t | jg|ƒ d S r   )r   r   )r   Útimeoutr   r   r   r      s   zApplyResult.waitr   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r
      s    r
   c                       sJ   e Zd ZdZdZdZ‡ fdd„Z‡ fdd„Z		dd	d
„Zdd„ Z	‡  Z
S )r	   zThread Task Pool.TFc                    sR   t t| ƒj|i |¤Ž dtj  krdk r n n| jd u r d| _t| jd�| _d S )N)é   r   )r   é   r   )Úmax_workers)Úsuperr	   r   ÚsysÚversion_infoÚlimitr   Úexecutor)r   ÚargsÚkwargs©Ú	__class__r   r   r      s   $zTaskPool.__init__c                    s   | j  ¡  tt| ƒ ¡  d S r   )r   Úshutdownr   r	   Úon_stop©r   r"   r   r   r%   %   s   
zTaskPool.on_stopNc                 K   s   | j  t|||||¡}t|ƒS r   )r   Úsubmitr   r
   )r   Útargetr    r!   ÚcallbackÚaccept_callbackÚ_r   r   r   r   Úon_apply)   s   ÿzTaskPool.on_applyc                 C   s   | j t| jjƒdœS )N)zmax-concurrencyÚthreads)r   Úlenr   Ú_threadsr&   r   r   r   Ú	_get_info/   s   
þzTaskPool._get_info)NNNN)r   r   r   Ú__doc__Úbody_can_be_bufferÚsignal_safer   r%   r,   r0   Ú__classcell__r   r   r"   r   r	      s    	
ÿr	   )r1   Ú
__future__r   r   r   Úconcurrent.futuresr   r   Úbaser   r   Ú__all__Úobjectr
   r	   r   r   r   r   Ú<module>   s   	