
    h                         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         R/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/worker/strategy.pyhybrid_to_proto2r4      s   
xx+TXXh-Cf   hhtn88I&XXk*'" ((8$xx88I&88Iq)XXk<8HHZ(hh|,((8$G" NN7??(b) XXk*HHZ('"	E &% '4%1FFFC  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)zConvert 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   
xx+TXXh-Cf 	KK$F#  
YW XXk*HHZ('"	E &% $dhhud.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 )zDefault 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goouc6K6K6M+'D'7C (.>w?F/P+gw /?w.M+gw&cH$:KwS	
  ff..wwG (('&'9JKKK366]2""(C"@VV#((\\#..s}}((,,Y:GG3 1 1 3?(=(=(? 77*77&|CGG'<=C&sww=C
 		*F6LL--/3fa0@$%' 'LL--/C#!<''c61--c+45xXc]5s+ ":. *JggsCHH$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\\2J ''G(F)W\\J34#3#3nn$$G,,N&:::&&22J%%F%%J--NT\\*G
WdHMM8WRU
VC''--55M +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 FLL!++5-m r   