
    ^f9                    Z   d Z ddlmZ ddlZddlZddlmZ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mZmZmZ d	dlmZ d	dlmZmZ d	dlmZ d	dlmZ d	dlmZ d	dlmZm Z  d	dl!m"Z" d	dl#m$Z$ dZ%dZ&dZ' ee(          Z)e)j*        e)j+        cZ*Z+ G d d          Z, G d d          Z-dS )zGeneric process mailbox.    )annotationsN)defaultdictdeque)contextmanager)copy)count)time   )ConsumerExchangeProducerQueue)LamportClock)maybe_declareoid_from)InconsistencyError)
get_logger)match)maybe_evaluatereprcall)cached_property)uuid
   zA node named {node.hostname} is already using this process mailbox!

Maybe you forgot to shutdown the other node or did not do so properly?
Or if you meant to start multiple nodes on the same host please make sure
you give each node a unique node name!
)NodeMailboxc                      e Zd ZdZdZdZdZdZdZ	 	 ddZ	ddZ
d Zd ZddZ	 	 dd	Zdd
Zd Zd ZddZeZd ZdS )r   zMailbox node.Nc                    || _         || _        || _        || _        | j        j        j        | _        |i }|| _        d S N)channelmailboxhostnamestateclockadjustadjust_clockhandlers)selfr!   r"   r   r&   r    s         >/var/www/html/env/lib/python3.11/site-packages/kombu/pidbox.py__init__zNode.__init__8   sD     
 L.5H     Tc                      j                              j                  } fd}||_        t	          |p j        |gf|| j         j        n|d|S )Nc                j    |r/t          j        t                                                   d S d S )N)node)warningswarnW_PIDBOX_IN_USEformat)namemessages	consumersr'   s      r(   verify_exclusivez'Node.Consumer.<locals>.verify_exclusiveF   s?     Ao44$4??@@@@@A Ar*   )no_ackaccept)r    	get_queuer!   on_declaredr   r   r7   )r'   r   r6   r7   optionsqueuer5   s   `      r(   r   zNode.ConsumerC   s    &&t}55	A 	A 	A 	A 	A -#t|eW
5;*0.4<&&f
 
 
 
 	
r*   c                $    || j         |j        <   |S r   )r&   __name__)r'   funs     r(   handlerzNode.handlerQ   s    &)cl#
r*   c                *    t          d|d           d S )NzCannot decode message: %rr
   exc_info)error)r'   messageexcs      r(   on_decode_errorzNode.on_decode_errorU   s    )3;;;;;;r*   c                x    |                      ||p| j        g| j                  }|                                 |S )N)r   	callbacksrF   )r   handle_messagerF   consume)r'   r   callbackconsumers       r(   listenzNode.listenX   sK    ==,4,K8K+L151E ! G G 	r*   c                r   |pi }t          dt          |d|          ||           |r| j        p| j        }	  |||          }nD# t          $ r  t
          $ r-}t          d|d           dt          |          i}Y d }~nd }~ww xY w|r,|                     | j	        |i|d         |d	         |
           |S )Nz1pidbox received method %s [reply_to:%s ticket:%s] )kwargszpidbox command error: %rr
   rA   rC   exchangerouting_key)rQ   rR   ticket)
debugr   handle_callhandle_cast
SystemExit	ExceptionrC   reprreplyr!   )	r'   method	argumentsreply_torS   rP   handlerZ   rE   s	            r(   dispatchzNode.dispatch_   s   O	Avr)444h	H 	H 	H.d.B$2B	)F69--EE 	 	 	 	) 	) 	),cA>>>>d3ii(EEEEEE	)  	&JJu- ( 4#+M#:$  & & & s   A B#BBc                @    |si n|} | j         |         | j        fi |S r   )r&   r"   r'   r[   r\   s      r(   r^   zNode.handlet   s1    '6BBY	$t}V$TZ==9===r*   c                .    |                      ||          S r   r^   ra   s      r(   rU   zNode.handle_callx       {{69---r*   c                .    |                      ||          S r   rc   ra   s      r(   rV   zNode.handle_cast{   rd   r*   c                \   |                     d          }|                     d          }|                     d          }|r/|                     |j                             d          pd           | j        }d}|r||v rd}n|r|rt	          |||          rd}nd}|r | j        di |S d S )	Ndestinationpatternmatcherr#   r   FTrO   )getr%   headersr!   r   r_   )r'   bodyrD   rg   rh   ri   r!   run_dispatchs           r(   rI   zNode.handle_message~   s    hh}--((9%%((9%% 	Ago11'::?a@@@= 	 ;&&# 	  	 Xw00 $#L 	) 4=((4(((	) 	)r*   c                d    | j                             ||||| j        | j         j                   d S )N)r   
serializer)r    _publish_replyr   ro   )r'   datarQ   rR   rS   rP   s         r(   rZ   z
Node.reply   sE    ##D(K,0L/3|/F 	$ 	H 	H 	H 	H 	Hr*   NNNN)NTNNN)NNNr   )r=   
__module____qualname____doc__r!   r    r&   r"   r   r)   r   r?   rF   rM   r_   r^   rU   rV   rI   dispatch_from_messagerZ   rO   r*   r(   r   r   &   s        H G H E G59(,	! 	! 	! 	!
 
 
 
  < < <    *.'+   *> > > >. . .. . .) ) ) )$ +H H H H Hr*   r   c                  (   e Zd ZdZeZdZdZdZdZ	dZ
dZdZdgZdZ	 	 	 	 ddZd	 Zdd
Z	 	 ddZddZddZ	 	 d dZd Zed             Zd Zed!d            Z	 d!dZ	 	 	 d"dZ	 	 	 	 d#dZ	 	 d dZd Zd Z e!d             Z"ed             Z#dS )$r   zProcess Mailbox.z	%s.pidboxzreply.%s.pidboxNdirectjson      $@c                   || _         || _        || _        |t                      n|| _        |                     | j         | j                  | _        |                     | j                   | _        t          t                    | _        || j        n|| _        || j        n|| _        || _        |	| _        |
| _        || _        || _        d S r   )	namespace
connectiontyper   r#   _get_exchangerQ   _get_reply_exchangereply_exchanger   r   	unclaimedr7   ro   	queue_ttlqueue_expiresreply_queue_ttlreply_queue_expires_producer_pool)r'   r}   r   r~   r#   r7   ro   producer_poolr   r   r   r   s               r(   r)   zMailbox.__init__   s    
 #$	',}\^^^%
**4>49EE"66t~FF$U++%+^dkk-7-?$//Z"*.#6 +r*   c                2    t          |           }||_        |S r   )r   r~   )r'   r~   bounds      r(   __call__zMailbox.__call__   s    T

%r*   c                `    |pt          j                    }|                     |||||           S )N)r    )socketgethostnamenode_cls)r'   r!   r"   r   r&   s        r(   r   zMailbox.Node   s1    3v133}}Xugx}NNNr*   c           	     F    |si n|}|                      |||d|||          S )NT)rZ   timeoutrK   r   
_broadcast)r'   rg   commandrP   r   rK   r   s          r(   callzMailbox.call   s<    !-vw%)7(0'.  0 0 	0r*   c                @    |si n|}|                      |||d          S NF)rZ   r   )r'   rg   r   rP   s       r(   castzMailbox.cast   s*    !-vw5IIIr*   c                >    |si n|}|                      ||d          S r   r   )r'   r   rP   s      r(   abcastzMailbox.abcast   s(    !-vwe<<<r*   r
   c           	     F    |si n|}|                      ||d||||          S )NT)rZ   r   limitrK   r   r   )r'   r   rP   r   r   rK   r   s          r(   
multi_callzMailbox.multi_call   s<    !-vwd'.e(0'.  0 0 	0r*   c           	     x    | j         }t          | d| j        j         | j        |dd| j        | j                  S )N.FT)rQ   rR   durableauto_deleteexpiresmessage_ttl)oidr   r   r2   r   r   )r'   r   s     r(   get_reply_queuezMailbox.get_reply_queue   sR    h//T(-//(,,
 
 
 	
r*   c                *    |                                  S r   )r   r'   s    r(   reply_queuezMailbox.reply_queue   s    ##%%%r*   c                `    t          | d| j         d| j        dd| j        | j                  S )Nr   z.pidboxFT)rQ   r   r   r   r   )r   r}   rQ   r   r   )r'   r!   s     r(   r8   zMailbox.get_queue   sE    11$.111]&
 
 
 	
r*   c              #     K   |r|V  d S | j         r8| j                                         5 }|V  d d d            d S # 1 swxY w Y   d S t          |d          V  d S )NF)auto_declare)r   acquirer   )r'   producerr   s      r(   producer_or_acquirezMailbox.producer_or_acquire  s       	8NNNNN 	8#++--                   777777777s   =AAc           
     (   |p| j         j        }t          |ddd          }|                     ||          5 }	  |j        |f|||g|| j                                        ddd| n# t          $ r Y nw xY wd d d            d S # 1 swxY w Y   d S )Nry   	transientF)exchange_typedelivery_moder   )rS   r#   T)rQ   rR   declarerk   retry)r~   default_channelr   r   publishr#   forwardr   )	r'   rZ   rQ   rR   rS   r   r   optschans	            r(   rp   zMailbox._publish_reply  s,   9$/9HH*5$)+ + + %%h55 	
  $,+%J"(4:3E3E3G3G1 1!	 
     &   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4   B/A*)B*
A74B6A77BBBc           	        ||||	|
d}|p| j         j        }| j        }|rKt          |                     |                     |                    || j        j        | j        d           |p| j	        }| 
                    ||          5 }|                    ||j        |g| j                                        |rt                      |z   ndd|d           d d d            d S # 1 swxY w Y   d S )N)r[   r\   rg   rh   ri   )rQ   rR   )rS   r]   r   )r#   r   T)rQ   r   rk   ro   r   )r~   r   rQ   r   r   updater   r2   r   ro   r   r   r#   r   r	   )r'   r   r\   rg   reply_ticketr   r   ro   r   rh   ri   rD   r   rQ   s                 r(   _publishzMailbox._publish   su    " )"-%%	' '
 9$/9= 	?$**400111NN,151D1I48H%> %>  ? ? ?  24?
%%h55 	(-("&*"4"4"6"68?$FDFFW$4$4QH H%T	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
AC&&C*-C*Fc                r   |Kt          |t          t          f          s/t          d                    t          |                              |
it          |
t                    sT|Rt          |t                    s=t          d                    t          |
          t          |                              |pi }|rt                      pd }|p| j        j	        }||r|rt          |          pd }|	p| j        }	|                     |||||||	|
|	  	         |r|                     |||||          S d S )Nz'destination must be a list/tuple not {}z.pattern and matcher must be strings not {}, {})rg   r   r   r   ro   rh   ri   )r   r   rK   r   )
isinstancelisttuple
ValueErrorr1   r   strr   r~   r   lenro   r   _collect)r'   r   r\   rg   rZ   r   r   rK   r   ro   rh   ri   r   r   s                 r(   r   zMailbox._broadcast8  sx    "{T5M:: #9@@%%' '( ( ( 
7C(@(@#Jw,D,D#%%+VDMM4==%I%I  
 O	'/49$/9 =[=4C$4$4<E24?
gyk#/"%!+%% 	 	' 	' 	'  	/==U)0*2)- ! / / /	/ 	/r*   c                   || j         }|p| j        j        }| j        }t	          ||g|d          }	g | j        | j        j        	                               S # t          $ r Y nw xY wfd}
|	
                    |
           	 |	5  |rt          |          pt                      D ]4}	 | j                            |           # t          j        $ r Y  nw xY wcd d d            |                    |j                   S # 1 swxY w Y   	 |                    |j                   d S # |                    |j                   w xY w)NT)r7   r6   c                0   |j         j        }  |d          pd            |d          }|rt                      |k    rd S  |d          }|k    r$r |                                |            d S 	|                             |            d S )Nr#   r   r   rS   )rk   rj   r	   append)
rl   rD   headerr   this_idr%   rK   	responsesrS   r   s
        r(   
on_messagez$Mailbox._collect.<locals>.on_messagep  s    _(FL-A...fY''G 466G++fXv..G&   #HTNNN  &&&&&'"))$/////r*   )r   )r7   r~   r   r   r   r   r#   r$   popKeyErrorregister_callbackranger   drain_eventsr   r   after_reply_message_receivedr2   )r'   rS   r   r   rK   r   r7   r   r;   rL   r   ir%   r   r   s    `  `       @@@r(   r   zMailbox._collect_  s    >[F9$/9 D5'&FFF	N	z(	==((( 	 	 	D		0 	0 	0 	0 	0 	0 	0 	0 	0 	"":...		: ! !/5<<:577  A44W4EEEE!>    ! ! ! ! ! ! ! --ej9999! ! ! ! ! ! ! ! ! --ej99999D--ej9999sf   A# #
A0/A0D9 "D7CDC&"D%C&&D*D9 DD9 DD9 9Ec                8    t          | j        |z  |dd          S )NFr   r   r   r   )r   exchange_fmt)r'   r}   r   s      r(   r   zMailbox._get_exchange  s,    )I5! %&13 3 3 	3r*   c                8    t          | j        |z  ddd          S )Nry   Fr   r   )r   reply_exchange_fmt)r'   r}   s     r(   r   zMailbox._get_reply_exchange  s,    /);% %&13 3 3 	3r*   c                     t          |           S r   )r   r   s    r(   r   zMailbox.oid  s    ~~r*   c                *    t          | j                  S r   )r   r   r   s    r(   r   zMailbox.producer_pool  s    d1222r*   )
ry   NNNNNNNNr{   rr   r   )Nr
   NNNrs   )NNNNNNNN)
NNFr
   NNNNNN)$r=   rt   ru   rv   r   r   r   r   r}   r~   r   rQ   r   r7   ro   r)   r   r   r   r   r   r   r   r   r8   r   r   rp   r   r   r   r   r   propertyr   r   rO   r*   r(   r   r      s0       HL* I J D H N XF J 8<=A/3;?	, , , ,(  
O O O O 15260 0 0 0J J J J= = = = 896:0 0 0 0

 

 

 & & _&
 
 
 8 8 8 ^8 /3   & 59:>GK   0 ?C15;?)-%/ %/ %/ %/P 26&**: *: *: *:X3 3 33 3 3   X 3 3 _3 3 3r*   r   ).rv   
__future__r   r   r.   collectionsr   r   
contextlibr   r   	itertoolsr   r	    r   r   r   r   clocksr   commonr   r   
exceptionsr   logr   ri   r   utils.functionalr   r   utils.objectsr   
utils.uuidr   REPLY_QUEUE_EXPIRESr0   __all__r=   loggerrT   rC   r   r   rO   r*   r(   <module>r      s     " " " " " "   * * * * * * * * % % % % % %                   1 1 1 1 1 1 1 1 1 1 1 1             + + + + + + + + * * * * * *             6 6 6 6 6 6 6 6 * * * * * *        	H		|V\uoH oH oH oH oH oH oH oHdE3 E3 E3 E3 E3 E3 E3 E3 E3 E3r*   