Ë
    ™V.j×	  ã                   ó´   — d 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ej                  «      Zy	)
z-Worker <-> Worker Sync at startup (Bootstep).é    )Ú	bootsteps)Ú
get_loggeré   )ÚEvents)ÚMinglec                   óh   ‡ — e Zd ZdZd ZefZddhZdˆ fd„	Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zdd
„Zd„ Zd„ Zˆ xZS )r   zŸBootstep syncing state with neighbor workers.

    At startup, or upon consumer restart, this will:

    - Sync logical clocks.
    - Sync revoked tasks.

    ÚamqpÚredisc                 ót   •— | xr | j                  |j                  «      | _        t        ‰| �  |fd|i|¤Ž y )NÚwithout_mingle)Úcompatible_transportÚappÚenabledÚsuperÚ__init__)ÚselfÚcr   ÚkwargsÚ	__class__s       €ú_C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\celery/worker/consumer/mingle.pyr   zMingle.__init__   sA   ø€ Ø)Ð)ÒN¨d×.GÑ.GÈÏÉÓ.NˆŒÜ‰ÑØñ	8Ø,ð	8Ø06ó	8ó    c                 ó’   — |j                  «       5 }|j                  j                  | j                  v cd d d «       S # 1 sw Y   y xY w©N)Úconnection_for_readÚ	transportÚdriver_typeÚcompatible_transports)r   r   Úconns      r   r   zMingle.compatible_transport    s4   € Ø×$Ñ$Ô&¨$Ø—>‘>×-Ñ-°×1KÑ1KÐK÷ '×&Ò&ús	   ‘"=½Ac                 ó&   — | j                  |«       y r   )Úsync)r   r   s     r   ÚstartzMingle.start$   s   € Ø�	‰	�!�r   c                 ód  — t        d«       | j                  |«      }|r{t        dt        |j                  «       D ��cg c]
  \  }}|sŒ	|‘Œ c}}«      «       |j                  «       D ��cg c]  \  }}|r| j	                  |||«      ‘Œ c}} t        d«       y t        d«       y c c}}w c c}}w )Nzmingle: searching for neighborszmingle: sync with %s nodeszmingle: sync completezmingle: all alone)ÚinfoÚ
send_helloÚlenÚitemsÚon_node_reply)r   r   ÚrepliesÚreplyÚvalueÚnodenames         r   r    zMingle.sync'   s    € ÜÐ.Ô/Ø—/‘/ !Ó$ˆÙÜÐ-Ü°·±´ÔI±¡  uÂ5’e°ÒIÓJôLð %,§M¡M¤Oô>Ù$3‘�˜5±uð ×Ñ  8¨UÕ3Ø$3ó>äÐ(Õ)äÐ$Õ%ùó Jùó>s   ½
B&ÁB&Á+B,c                 ó4  — |j                   j                  j                  d|j                  ¬«      }|j                  j
                  j                  }|j                  |j                  |j                  «      xs i }|j                  |j                  d «       |S )Ng      ð?)ÚtimeoutÚ
connection)r   ÚcontrolÚinspectr.   Ú
controllerÚstateÚrevokedÚhelloÚhostnameÚ_dataÚpop)r   r   r0   Úour_revokedr(   s        r   r$   zMingle.send_hello3   sn   € Ø—%‘%—-‘-×'Ñ'°ÀÇÁÐ'ÓMˆØ—l‘l×(Ñ(×0Ñ0ˆØ—-‘- §
¡
¨K×,=Ñ,=Ó>ÒDÀ"ˆØ�‰�A—J‘J Ô%Øˆr   c                 óœ   — t        d|«       	  | j                  |fi |¤Ž y # t        $ r ‚ t        $ r}t	        d||«       Y d }~y d }~ww xY w)Nz mingle: processing reply from %szmingle: sync with %s failed: %r)ÚdebugÚsync_with_nodeÚMemoryErrorÚ	ExceptionÚ	exception)r   r   r+   r)   Úexcs        r   r'   zMingle.on_node_reply:   sU   € ÜÐ0°(Ô;ð	HØˆD×Ñ Ñ+ UÓ+øÜò 	ØÜò 	HÜÐ7¸À3×GÑGûð	Hús   Ž" ¢A´AÁAc                 óL   — | j                  ||«       | j                  ||«       y r   )Úon_clock_eventÚon_revoked_received)r   r   Úclockr3   r   s        r   r;   zMingle.sync_with_nodeC   s"   € Ø×Ñ˜A˜uÔ%Ø× Ñ   GÕ,r   c                 óœ   — |r&|j                   j                  j                  |«       y |j                   j                  j                  «        y r   )r   rC   ÚadjustÚforward)r   r   rC   s      r   rA   zMingle.on_clock_eventG   s-   € Ù%*ˆ�‰�‰×Ñ˜5Õ!°·±·±×0CÑ0CÕ0Er   c                 óh   — |r0|j                   j                  j                  j                  |«       y y r   )r1   r2   r3   Úupdate)r   r   r3   s      r   rB   zMingle.on_revoked_receivedJ   s(   € ÙØ�L‰L×Ñ×&Ñ&×-Ñ-¨gÕ6ð r   )F)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úlabelr   Úrequiresr   r   r   r!   r    r$   r'   r;   rA   rB   Ú__classcell__)r   s   @r   r   r      sQ   ø„ ñð €EØˆy€HØ# WÐ-Ðõ8ò
Lòò
&òòHó-òFö7r   r   N)rL   Úceleryr   Úcelery.utils.logr   Úeventsr   Ú__all__rI   Úloggerr:   r#   r>   ÚStartStopStepr   © r   r   Ú<module>rW      sP   ðÙ 3Ý Ý 'å à
€á	�HÓ	€ØŸ™ v§{¡{°F×4DÑ4DÐ €€tˆYô?7ˆY×$Ñ$õ ?7r   