
     h9                     N   d 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.    N)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         H/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/kombu/pidbox.py__init__zNode.__init__6   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_exclusiveD   s?     Ao44$4??@@@@@A Ar)   )no_ackaccept)r   	get_queuer    on_declaredr
   r   r6   )r&   r   r5   r6   optionsqueuer4   s   `      r'   r
   zNode.ConsumerA   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.handlerO   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_errorS   s    )3;;;;;;r)   c                 x    |                      ||p| j        g| j                  }|                                 |S )N)r   	callbacksrE   )r
   handle_messagerE   consume)r&   r   callbackconsumers       r'   listenzNode.listenV   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	   r@   rB   exchangerouting_key)rP   rQ   ticket)
debugr   handle_callhandle_cast
SystemExit	ExceptionrB   reprreplyr    )	r&   method	argumentsreply_torR   rO   handlerY   rD   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&   rZ   r[   s      r'   r]   zNode.handler   s1    '6BBY	$t}V$TZ==9===r)   c                 .    |                      ||          S r   r]   r`   s      r'   rT   zNode.handle_callv       {{69---r)   c                 .    |                      ||          S r   rb   r`   s      r'   rU   zNode.handle_casty   rc   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   FTrN   )getr$   headersr    r   r^   )r&   bodyrC   rf   rg   rh   r    run_dispatchs           r'   rH   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   rn   )r&   datarP   rQ   rR   rO   s         r'   rY   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>   rE   rL   r^   r]   rT   rU   rH   dispatch_from_messagerY   rN   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_exchangerP   _get_reply_exchangereply_exchanger   r   	unclaimedr6   rn   	queue_ttlqueue_expiresreply_queue_ttlreply_queue_expires_producer_pool)r&   r|   r~   r}   r"   r6   rn   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)rY   timeoutrJ   r   
_broadcast)r&   rf   commandrO   r   rJ   r   s          r'   callzMailbox.call   s<    !-vw%)7(0'.  0 0 	0r)   c                 @    |si n|}|                      |||d          S NF)rY   r   )r&   rf   r   rO   s       r'   castzMailbox.cast   s*    !-vw5IIIr)   c                 >    |si n|}|                      ||d          S r   r   )r&   r   rO   s      r'   abcastzMailbox.abcast   s(    !-vwe<<<r)   r	   c           	      F    |si n|}|                      ||d||||          S )NT)rY   r   limitrJ   r   r   )r&   r   rO   r   r   rJ   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)rP   rQ   durableauto_deleteexpiresmessage_ttl)oidr   r   r1   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)rP   r   r   r   r   )r   r|   rP   r   r   )r&   r    s     r'   r7   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 )Nrx   	transientF)exchange_typedelivery_moder   )rR   r"   T)rP   rQ   declarerj   retry)r}   default_channelr   r   publishr"   forwardr   )	r&   rY   rP   rQ   rR   r   r   optschans	            r'   ro   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)rZ   r[   rf   rg   rh   )rP   rQ   )rR   r\   r   )r"   r   T)rP   r   rj   rn   r   )r}   r   rP   r   r   updater   r1   r   rn   r   r   r"   r   r   )r&   r~   r[   rf   reply_ticketr   r   rn   r   rg   rh   rC   r   rP   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 {}, {})rf   r   r   r   rn   rg   rh   )r   r   rJ   r   )
isinstancelisttuple
ValueErrorr0   r~   strr   r}   r   lenrn   r   _collect)r&   r   r[   rf   rY   r   r   rJ   r   rn   rg   rh   r   r   s                 r'   r   zMailbox._broadcast6  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)r6   r5   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   rR   )rj   ri   r   append)
rk   rC   headerr   this_idr$   rJ   	responsesrR   r   s
        r'   
on_messagez$Mailbox._collect.<locals>.on_messagen  s    _(FL-A...fY''G 466G++fXv..G&   #HTNNN  &&&&&'"))$/////r)   )r   )r6   r}   r   r   r
   r   r"   r#   popKeyErrorregister_callbackranger   drain_eventsr   r   after_reply_message_receivedr1   )r&   rR   r   r   rJ   r   r6   r   r:   rK   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 )Nrx   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)   )
rx   NNNNNNNNrz   rq   r   )Nr	   NNNrr   )NNNNNNNN)
NNFr	   NNNNNN)$r<   rs   rt   ru   r   r   r   r   r|   r}   r~   rP   r   r6   rn   r(   r   r   r   r   r   r   r   r   r7   r   r   ro   r   r   r   r   r   propertyr   r   rN   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   ),ru   r   r-   collectionsr   r   
contextlibr   r   	itertoolsr   r    r
   r   r   r   clocksr   commonr   r   
exceptionsr   logr   rh   r   utils.functionalr   r   utils.objectsr   
utils.uuidr   REPLY_QUEUE_EXPIRESr/   __all__r<   loggerrS   rB   r   r   rN   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)   