Ë
    ™V.jœ  ã                   óø   — 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d	lmZ dd
lmZ ddlmZ ddlmZ dZ ee«      Zd„ Zd„ Zej8                  ej:                  eej<                  eefd„Z y)z'Task execution strategy (optimization).é    N)Úto_timestamp)Úsignals)Útrace)ÚInvalidTaskError)Úsymbol_by_name)Ú
get_logger)Úsaferepr)Útimezoneé   )Úcreate_request_cls)Útask_reserved)Údefaultc                 ó|  — 	 |j                  dd«      |j                  di «      }}|j                   |j                  d«      |j                  d«      |j                  d«      |j                  d	«      |j                  d
«      |j                  d«      |j                  d«      |j                  d«      |j                  d«      |j                  d«      |j                  dd«      |j                  dd«      |j                  d«      |j                  d«      |j                  d«      dœ}|j                  | j                  xs i «       |j                  d«      |j                  d«      |j                  d«      ddœ}|||f|d|j                  dd«      fS # t        $ r t        d«      ‚t        $ r t        d«      ‚w xY w)zECreate a fresh protocol 2 message from a hybrid protocol 1/2 message.Úargs© Úkwargsú!Message does not have args/kwargsú(Task keyword arguments must be a mappingÚlangÚtaskÚidÚroot_idÚ	parent_idÚgroupÚmethÚshadowÚetaÚexpiresÚretriesr   Ú	timelimit)NNÚargsreprÚ
kwargsreprÚorigin)r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   Ú	callbacksÚerrbacksÚchordN©r$   r%   r&   ÚchainTÚutc)ÚgetÚitemsÚKeyErrorr   ÚAttributeErrorÚupdateÚheaders)ÚmessageÚbodyr   r   r/   Úembeds         úXC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\celery/worker/strategy.pyÚhybrid_to_proto2r4      s�  € ð
Ø—x‘x ¨Ó+¨T¯X©X°hÀÓ-CˆfˆØ�Šð —‘˜Ó Ø—‘˜Ó Ø�h‰h�t‹nØ—8‘8˜IÓ&Ø—X‘X˜kÓ*Ø—‘˜'Ó"Ø—‘˜Ó Ø—(‘(˜8Ó$Ø�x‰x˜‹Ø—8‘8˜IÓ&Ø—8‘8˜I qÓ)Ø—X‘X˜k¨<Ó8Ø—H‘H˜ZÓ(Ø—h‘h˜|Ó,Ø—(‘(˜8Ó$ñ€Gð" ‡N�N�7—?‘?Ò( bÔ)ð —X‘X˜kÓ*Ø—H‘H˜ZÓ(Ø—‘˜'Ó"Øñ	€Eð �&˜%Ð  '¨4°·±¸%ÀÓ1FÐFÐFøôC ò DÜÐBÓCÐCÜò 
ÜØ6ó
ð 	
ð
ús   ‚0F Æ(F;c                 óä  — 	 |j                  dd«      |j                  di «      }}|j                   |j                  t        |«      t        |«      | j                  ¬«       	 |d   |d<   |j                  d	«      |j                  d
«      |j                  d«      ddœ}|||f|d|j                  dd«      fS # t        $ r t        d«      ‚t        $ r t        d«      ‚w xY w# t        $ r Y Œƒw xY w)zŽConvert Task message protocol 1 arguments to protocol 2.

    Returns:
        Tuple: of ``(body, headers, already_decoded_status, utc)``
    r   r   r   r   r   )r!   r"   r/   Útasksetr   r$   r%   r&   Nr'   Tr)   )r*   r+   r,   r   r-   r.   r	   r/   )r0   r1   r   r   r2   s        r3   Úproto1_to_proto2r7   B   s  € ð
Ø—x‘x ¨Ó+¨T¯X©X°hÀÓ-CˆfˆØ�Šð 	‡K�KÜ˜$“Ü˜FÓ#Ø—‘ð ô ð
Ø˜Y™ˆˆW‰ð —X‘X˜kÓ*Ø—H‘H˜ZÓ(Ø—‘˜'Ó"Øñ	€Eð �&˜%Ð  $¨¨d¯h©h°u¸dÓ.CÐCÐCøô+ ò DÜÐBÓCÐCÜò 
ÜØ6ó
ð 	
ð
ûô ò Ùðús   ‚0B8 Á#C# Â8(C Ã#	C/Ã.C/c	                 óÚ  ‡ ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡— ‰j                   Š‰j                  Št        j                  t        j
                  «      Š‰j                  Š‰xr ‰j                  }	‰xr ‰j                  Š|	xr ‰ j                  Š‰j                  j                  Š‰j                  Š‰j                   Š‰j                  j                  Š‰j                   Š‰j"                  Š‰j$                  Št'        ‰ j(                  «      }
t+        |
‰ ‰j,                  ‰‰‰¬«      Š‰j.                  j0                  j2                  Št4        fˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ ˆˆˆˆfd„	Š‰S )z‘Default task execution strategy.

    Note:
        Strategies are here as an optimization, so sadly
        it's not very easy to override.
    )Úappc                 óf  •— |€<d| j                   vr.| j                  | j                  d‰j                  «       f\  }}}}n8d| j                   v rt	        | | j                   «      \  }}}}n ‰| |«      \  }}}} ‰| ||‰‰‰‰"‰||||¬«      }	‰rU|	j
                  |	j                  |	j                  |	j                  |	j                  dœ}
 ‰t        j                  |
d|
i¬«       |	j                  s|	j
                  ‰ v r|	j                  «       ry t        j                  j!                  ‰|	¬«       ‰%r´ ‰!d|	j
                  |	j                  |	j                  |	j                  |	j"                  |	j$                  |	j&                  j)                  d	d
«      |	j                  xr |	j                  j+                  «       |	j                  xr |	j                  j+                  «       ¬«
       d }d }|	j                  rC	 |	j,                  r | ‰&|	j                  «      «      }n ||	j                  ‰j.                  «      }‰r ‰‰"j                  «      }|r+|r)‰j8                  j;                  «         ‰|‰|	|dfd¬«      S |r)‰j8                  j;                  «         ‰|‰|	fd¬«       ‰#S |r
 ‰|	|d«      S  ‰$|	«       |r|D �cg c]
  } ||	«      ‘Œ c}  ‰|	«       y # t0        t2        f$ rC} ‰d|	j                  ||	j5                  d¬«      d¬«       |	j7                  d¬«       Y d }~Œîd }~ww xY wc c}w )Nr   F)Úon_ackÚ	on_rejectr9   ÚhostnameÚeventerr   Úconnection_errorsr1   r/   Údecodedr)   )r   Únamer   r   r   Údata)Úextra)ÚsenderÚrequestztask-receivedr   r   )	ÚuuidrA   r   r   r   r   r   r   r   z2Couldn't convert ETA %r to timestamp: %r. Task: %rT)Úsafe)Úexc_info)Úrequeuer   é   )Úpriority)Úpayloadr1   r/   Úuses_utc_timezoner4   r   rA   r!   r"   r   Ú
_app_traceÚLOG_RECEIVEDr   Úrevokedr   Útask_receivedÚsendr   r   Úrequest_dictr*   Ú	isoformatr)   r
   ÚOverflowErrorÚ
ValueErrorÚinfoÚrejectÚqosÚincrement_eventually)'r0   r1   ÚackrX   r$   r   r/   r@   r)   ÚreqÚcontextÚbucketr   ÚexcÚcallbackÚReqÚ
_does_infor9   Úapply_eta_taskÚcall_atr?   ÚconsumerÚerrorr>   Ú
get_bucketÚhandler=   rW   Úlimit_post_etaÚ
limit_taskr7   Úrate_limits_enabledÚrevoked_tasksÚ
send_eventr   Útask_message_handlerr   Útask_sends_eventsÚto_system_tzs'                  €€€€€€€€€€€€€€€€€€€€€€€€r3   rn   z%default.<locals>.task_message_handler„   sá  ø€ àˆ<˜F¨'¯/©/Ñ9à—‘˜gŸo™o¨u°c×6KÑ6KÓ6Mð+Ñ'ˆD�'˜7¡Cð ˜Ÿ™Ñ(Ü.>¸wØ?F¿¹ó/PÑ+��g˜w©ñ /?¸wÈÓ.MÑ+��g˜w¨áØØ &¨c¸HØ $Ð:KØ˜w°¸Sô	
ˆñ ð —f‘fØŸ™ØŸ™ØŸ.™.Ø—w‘wñˆGñ ”×(Ñ(¨'¸&À'Ð9JÕKØ�KŠK˜3Ÿ6™6 ]Ñ2¸¿¹¼Øä×Ñ×"Ñ"¨(¸CÐ"Ô@áÙØØ—V‘V #§(¡(Ø—\‘\¨#¯.©.ØŸ™¨s¯}©}Ø×(Ñ(×,Ñ,¨Y¸Ó:Ø—G‘GÒ3 §¡× 1Ñ 1Ó 3ØŸ™Ò?¨¯©×(=Ñ(=Ó(?õð ˆØˆØ�7Š7ð*Ø—7’7Ù&¡|°C·G±GÓ'<Ó=‘Cá& s§w¡w°·±Ó=�Cñ
 Ù §	¡	Ó*ˆFá‘6Ø�L‰L×-Ñ-Ô/Ù˜3 °°f¸aÐ0@Ø$%ô'ð 'áØ�L‰L×-Ñ-Ô/Ù�C˜¨#¨¸!Õ<Ø'Ð'ÙÙ˜c 6¨1Ó-Ð-á�cÔÙÙ+4Ó5©9˜x‰X�c�]¨9Ò5Ùˆs�øô+ "¤:Ð.ò *ÙÐJØ—g‘g˜s C§H¡H°$ HÓ$7À$õHà—
‘
 5�
×)Ñ)ûð*üò( 6s   Ç6AK Ê>L.ËL+Ë(9L&Ì&L+)r=   r?   ÚloggerÚisEnabledForÚloggingÚINFOÚevent_dispatcherÚenabledrR   Úsend_eventsÚtimerrd   rc   Údisable_rate_limitsÚtask_bucketsÚ__getitem__Úon_task_requestÚ_limit_taskÚ_limit_post_etar   ÚRequestr   ÚpoolÚ
controllerÚstaterP   r   )r   r9   re   rW   rf   r   rp   Úbytesr7   Úeventsr   ra   rb   rc   rd   r?   r>   rg   rh   r=   ri   rj   rk   rl   rm   rn   ro   s   ``````` `  @@@@@@@@@@@@@@@@r3   r   r   c   s+  ÿÿÿ€ ð × Ñ €HØ ×2Ñ2ÐÜ×$Ñ$¤W§\¡\Ó2€Jð ×'Ñ'€GØÒ(˜Ÿ™€FØÒ)˜WŸ\™\€JØÒ3 4×#3Ñ#3Ðà�n‰n×$Ñ$€GØ×,Ñ,€NØ&×:Ñ:Ð:ÐØ×&Ñ&×2Ñ2€JØ×%Ñ%€FØ×%Ñ%€JØ×-Ñ-€NÜ˜TŸ\™\Ó*€GÜ
˜W d¨H¯M©M¸8ÀWÐRUÔ
V€Cà×'Ñ'×-Ñ-×5Ñ5€Mô +7÷K÷ K÷ Kô KðX  Ðó    )!Ú__doc__rs   Úkombu.asynchronous.timerr   Úceleryr   Ú
celery.appr   rN   Úcelery.exceptionsr   Úcelery.utils.importsr   Úcelery.utils.logr   Úcelery.utils.safereprr	   Úcelery.utils.timer
   rE   r   r‚   r   Ú__all__Ú__name__rq   r4   r7   rW   rf   Ú	to_systemrƒ   r   r   r…   r3   Ú<module>r’      sk   ðÙ -Û å 1å Ý *Ý .Ý /Ý 'Ý *Ý &å 'Ý  à
€á	�HÓ	€ò&GòRDðD —‘ F§L¡LÀØ!×+Ñ+°5Ø-ôm r…   