
     hc                        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dl
mZ dd	lmZ d
ZdgZg Z e            Zej                            d          Zd Z G d de          Z G d de	          Zd Z G d de          Z e ee                    Z G d de          Z e ee                    Zd Zd ZddZ d Z!dS )zPublic resource pools.    N)chain   )Resource)Producer)EqualityDict)register_after_fork)lazy)ProducerPool	PoolGroupregister_groupconnections	producers	get_limit	set_limitreset
   KOMBU_DISABLE_LIMIT_PROTECTIONc                 .    |                                   d S N)cleargroups    G/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/kombu/pools.py_after_fork_cleanup_groupr      s    	KKMMMMM    c                   X     e Zd ZdZeZdZ fdZd Zd Zd Z	d Z
d Zd	 Z fd
Z xZS )r
   z*Pool of :class:`kombu.Producer` instances.Tc                     || _         |                    dd           p| j        | _         t                      j        |i | d S )Nr   )r   popr   super__init__)selfr   argskwargs	__class__s       r   r    zProducerPool.__init__   sI    &

:t44E$)&)))))r   c                 8    | j                             d          S )NT)block)r   acquirer!   s    r   _acquire_connectionz ProducerPool._acquire_connection#   s    ''d'333r   c                     |                                  }	 |                     |          S # t          $ r |                                  w xY wr   )r)   r   BaseExceptionrelease)r!   conns     r   create_producerzProducerPool.create_producer&   sU    ''))	==&&& 	 	 	LLNNN	s	   +  Ac                 *    t          | j                  S r   )r	   r.   r(   s    r   newzProducerPool.new.   s    D()))r   c                     | j         rCt          | j                   D ]0}| j                            |                                            /d S d S r   )limitrange	_resource
put_nowaitr0   )r!   _s     r   setupzProducerPool.setup1   sZ    : 	64:&& 6 6))$((**5555	6 	66 6r   c                     d S r    )r!   resources     r   close_resourcezProducerPool.close_resource6   s    r   c                     t          |          r
 |            }|j        N|                                 }	 |                    |           n## t          $ r |                                  w xY w|S r   )callable_channelr)   reviver+   r,   )r!   pr-   s      r   preparezProducerPool.prepare9   s|    A;; 	A:++--D     s   A  A,c                     |j         r|j                                          d |_        t                                          |           d S r   )__connection__r,   channelr   )r!   r:   r$   s     r   r,   zProducerPool.releaseE   sG    " 	.#++---!!!!!r   )__name__
__module____qualname____doc__r   close_after_forkr    r)   r.   r0   r7   r;   rA   r,   __classcell__)r$   s   @r   r
   r
      s        44H* * * * *
4 4 4  * * *6 6 6
  
 
 
" " " " " " " " "r   r
   c                   &    e Zd ZdZddZd Zd ZdS )r   zCollection of resource pools.NTc                 p    || _         || _        | j        rt          t          | t                     d S d S d S r   )r2   rI   r   r   )r!   r2   rI   s      r   r    zPoolGroup.__init__O   sL    
 0  	A%8%D&?@@@@@	A 	A%D%Dr   c                      t          d          )Nz!PoolGroups must define ``create``)NotImplementedError)r!   r:   r2   s      r   createzPoolGroup.createU   s    !"EFFFr   c                 x    | j         }|t          u rt                      }|                     ||          x}| |<   |S r   )r2   use_global_limitr   rO   )r!   r:   r2   ks       r   __missing__zPoolGroup.__missing__X   s?    
$$$KKE![[5999DNr   )NT)rE   rF   rG   rH   r    rO   rS   r9   r   r   r   r   L   sS        ''A A A AG G G    r   r   c                 :    t                               |            | S )z*Register group (can be used as decorator).)_groupsappendr   s    r   r   r   `   s    NN5Lr   c                       e Zd ZdZd ZdS )ConnectionszCollection of connection pools.c                 .    |                     |          S Nr2   )Poolr!   
connectionr2   s      r   rO   zConnections.createi   s    U+++r   NrE   rF   rG   rH   rO   r9   r   r   rX   rX   f   s)        )), , , , ,r   rX   r[   c                       e Zd ZdZd ZdS )	ProducerszCollection of producer pools.c                 :    t          t          |         |          S rZ   )r
   r   r]   s      r   rO   zProducers.creates   s    K
35AAAAr   Nr_   r9   r   r   ra   ra   p   s.        ''B B B B Br   ra   c                  2    t          d t          D              S )Nc              3   `   K   | ])}|r|                                 nt          g           V  *d S r   )valuesiter).0gs     r   	<genexpr>z_all_pools.<locals>.<genexpr>{   s9      DDq!1AHHJJJbDDDDDDr   )r   rU   r9   r   r   
_all_poolsrj   z   s    DDGDDDEEr   c                      t           d         S )z"Get current connection pool limit.r   )_limitr9   r   r   r   r   ~   s    !9r   Fc                     | pd} t           d         pd}| |k    r0| t           d<   t                      D ]}|                    |            | S )zSet new connection pool limit.r   )rl   rj   resize)r2   forcereset_afterignore_errorsglimitpools         r   r   r      sW    JQEAY^!Fq	LL 	 	DKKLr   c                      t                      D ]'}	 |                                 # t          $ r Y $w xY wt          D ]}|                                 dS )z*Reset all pools by closing open resources.N)rj   force_close_all	ExceptionrU   r   )r"   r#   rs   r   s       r   r   r      sw      	  """" 	 	 	D	   s   '
44)FFF)"rH   os	itertoolsr   r^   r   	messagingr   utils.collectionsr   utils.compatr   utils.functionalr	   __all__rl   rU   objectrQ   environgetdisable_limit_protectionr   r
   r   r   rX   r   ra   r   rj   r   r   r   r9   r   r   <module>r      s     				                         + + + + + + - - - - - - " " " " " "J

688 :>>*JKK   1" 1" 1" 1" 1"8 1" 1" 1"h       (  , , , , ,) , , , n[[/?@@@AAB B B B B	 B B B N99+;<<<==	F F F  
       r   