
    h.                         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
 ddlmZ dd	lmZ d
Z ee      Zej$                  ej&                  ej(                  cZZZ G d d      Z G d de      Zy)zWorker Pidbox (remote control).    N)ignore_errors)safe_str)AttributeDict)pass1)
get_logger   )control)PidboxgPidboxc                   D    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)r
   zWorker mailbox.Nc           
         || _         |j                  | _        |j                  j                  j                  j                  t        |j                        t        j                  j                  t        |j                  |j                  ||j                  j                  rt        nt                    | _        | j                   j                  j                  j                   | _        y )N)apphostnameconsumertset)handlersstate)cr   r   r	   mailboxNoder   Paneldatar   
controlleruse_eventloopr   setnodeclockforward_forward_clockselfr   s     P/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/worker/pidbox.py__init__zPidbox.__init__   s    

EEMM))..QZZ ]]''EEll88Uc	C / 
	 #ffjj..66    c                     | j                          	 | j                  j                  ||       y # t        $ r}t	        d|       Y d }~y d }~wt
        $ r(}t	        d|d       | j                          Y d }~y d }~ww xY w)NzNo such control command: %szControl command error: %rT)exc_info)r   r   handle_messageKeyErrorerror	Exceptionreset)r!   bodymessageexcs       r"   
on_messagezPidbox.on_message'   sh     		II$$T73 	6/55 	-sTBJJLL	s    / 	A=A		A=A88A=c                     |j                   j                         | j                  _        | j                  j                  | j                        | _        |j                  | j
                  _        y N)callback)
connectionchannelr   listenr/   r   on_decode_errorr    s     r"   startzPidbox.start3   sJ    LL002				(($//(B()(9(9%r$   c                      y N r!   s    r"   on_stopzPidbox.on_stop8   s    r$   c                 P    | j                          | j                  |      | _        y r9   )r<   _close_channelr   r    s     r"   stopzPidbox.stop;   s    ++A.r$   c                 p    | j                  | j                         | j                  | j                         y r9   )r?   r   r7   r;   s    r"   r+   zPidbox.reset?   s"    		$&&

466r$   c                     | j                   rB| j                   j                  r+t        || j                   j                  j                         y y y r9   )r   r4   r   closer    s     r"   r>   zPidbox._close_channelC   s6    99**!TYY..445 +9r$   c                     | j                          | j                  r+t        d       t        || j                  j                         | j                  | j                         y )NzCanceling broadcast consumer...)r<   r   debugr   cancelr?   r   r    s     r"   shutdownzPidbox.shutdownG   s?    ==34!T]]112		$&&r$   )__name__
__module____qualname____doc__r   r#   r/   r7   r<   r?   r+   r>   rF   r:   r$   r"   r
   r
      s2    H7
:
/6r$   r
   c                   :    e Zd ZdZdZdZdZd Zd Zd Z	d Z
d Zy)	r   zWorker pidbox (greenlet).Nr   c                 P    |j                   j                  | j                  |       y r9   )poolspawn_nloopr    s     r"   r7   zgPidbox.startV   s    	tyy!$r$   c                     | j                   rN| j                  j                          t        d       | j                   j	                          d x| _         | _        y y )Nz+Waiting for broadcast thread to shutdown...)_node_stopped_node_shutdownr   rD   waitr;   s    r"   r<   zgPidbox.on_stopY   sM    ##%?@##%7;;D!4	 r$   c                 .    | xj                   dz  c_         y )Nr   )_resetsr;   s    r"   r+   zgPidbox.reset`   s    r$   c                     | j                  |       |j                         | j                  _        | j                  j                  | j                        | _        | j
                  j                          y r1   )r>   r4   r   r5   r/   r   consume)r!   r   r3   s      r"   	_do_resetzgPidbox._do_resetc   sR    A&..0				(($//(Br$   c                    | j                   g}t        j                         x}| _        t        j                         x}| _        	 |j                         5 }t        d|j                                | j                  ||       |j                         sm|j                  ra|d   | j                   k  r|dxx   dz  cc<   | j                  ||       	 |j                  d       |j                         s|j                  rad d d        |j                          y # t        j                  $ r Y Kw xY w# 1 sw Y   3xY w# |j                          w xY w)Nzpidbox: Connected to %s.r   r   g      ?)timeout)rU   	threadingEventrR   rQ   connection_for_readinfoas_urirX   is_setr3   drain_eventssocketrZ   r   )r!   r   resetsrF   stoppedr3   s         r"   rO   zgPidbox.loopi   s   ,,)2)::4&'0'88$$	&&( 
J/1B1B1DEq*-"//+ay4<</q	Q	q*5"///< #//+
 KKM ">> 
 
 KKMsI   D= A:D1D"D1?D= D.+D1-D..D11D:6D= =E)rG   rH   rI   rJ   rR   rQ   rU   r7   r<   r+   rX   rO   r:   r$   r"   r   r   O   s-    #NMG%< r$   r   )rJ   rb   r[   kombu.commonr   kombu.utils.encodingr   celery.utils.collectionsr   celery.utils.functionalr   celery.utils.logr    r	   __all__rG   loggerrD   r)   r^   r
   r   r:   r$   r"   <module>rm      sb    %   & ) 2 ) ' 
	H	\\6<< ud8 8v+f +r$   