
    `f                         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j        ej        eej        eefdZ dS )z'Task execution strategy (optimization).    N)to_timestamp)signals)trace)InvalidTaskError)symbol_by_name)
get_logger)saferepr)timezone   )create_request_cls)task_reserved)defaultc                 *   	 |                     dd          |                     di           }}|j         n5# t          $ r t          d          t          $ r t          d          w xY w|                     d          |                     d          |                     d          |                     d	          |                     d
          |                     d          |                     d          |                     d          |                     d          |                     d          |                     dd          |                     dd          |                     d          |                     d          |                     d          d}|                    | j        pi            |                     d          |                     d          |                     d          dd}|||f|d|                     dd          fS )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         H/var/www/html/env/lib/python3.11/site-packages/celery/worker/strategy.pyhybrid_to_proto2r4      s   
xx++TXXh-C-Cf D D DBCCC 
 
 
6
 
 	

     hhtnn88I&&XXk**'""  ((8$$xx88I&&88Iq))XXk<88HHZ((hh|,,((8$$ G" NN7?(b))) XXk**HHZ(('""	 E &% '4%1F1FFFs	   36 2A(c                 8   	 |                     dd          |                     di           }}|j         n5# t          $ r t          d          t          $ r t          d          w xY w|                    t          |          t          |          | j                   	 |d         |d<   n# t          $ r Y nw xY w|                     d	          |                     d
          |                     d          dd}|||f|d|                     dd          fS )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   sW   
xx++TXXh-C-Cf D D DBCCC 
 
 
6
 
 	

 	KK$F##    
YW    XXk**HHZ(('""	 E &% $dhhud.C.CCCs   36 2A(#B/ /
B<;B<c	                     j         j        t                              t          j                  j        oj        }	oj        |	o j	        j
        j        j        j         j        j        j        j        j        t'           j                  }
t+          |
 j                  j        j        j        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                    |1d| j         vr(| j        | j        d                                f\  }}}}n5d| j         v rt	          | | j                   \  }}}}n | |          \  }}}} | ||!||||          r;j        j        j        j        j	        d}	 t          j        |	d|	i           j        s	j        v r                                rd S t          j                                       $r  dj        j        j        j        j        j        j                            d	d
          j	        oj	                                        j        oj                                        
  
         d }
d }j	        r	 j        r | %j	                            }n |j	        j                  }n]# t0          t2          f$ rI} dj	        |                    d          d                               d           Y d }~nd }~ww xY wr !j                  }
|r-|
r+j                                          ||
dfd          S |r+j                                          |fd           "S |
r |
d          S  #           |rfd|D                          d S )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      )priorityc                 &    g | ]} |          S r   r   ).0callbackreqs     r3   
<listcomp>z9default.<locals>.task_message_handler.<locals>.<listcomp>   s!    555xXXc]]555    )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   ackr^   r$   r   r/   r@   r)   contextbucketr   excrO   Req
_does_infor9   apply_eta_taskcall_atr?   consumererrorr>   
get_buckethandler=   r]   limit_post_eta
limit_taskr7   rate_limits_enabledrevoked_tasks
send_eventr   task_message_handlerr   task_sends_eventsto_system_tzs&                @r3   rr   z%default.<locals>.task_message_handler   s   <F'/99gouc6K6K6M6M+'D'7CC ((.>w?F/P /P+gw /?.>w.M.M+gwc&cH$:KwS	
 
 
  
	L f.w G D('&'9JKKKKK 	36]222F""(C"@@@ 		JV#(\#.s}(,,Y::G3 1 1 3 3?(=(=(?(?    7 		**7 >&,||CG'<'<==CC&,sw==C!:. * * *JgsCHH$H$7$7$H H H H

5
))))))))*  	+Z	**F 	'6 	'L--///73fa0@$%' ' ' ' 	(L--///GC#!<<<<'' 	.:c61---c 	6555595555ss   7G H.%?H))H.)r=   r?   loggerisEnabledForloggingINFOevent_dispatcherenabledrX   send_eventstimerrh   rg   disable_rate_limitstask_buckets__getitem__on_task_request_limit_task_limit_post_etar   Requestr   pool
controllerstaterV   r   )r   r9   ri   r]   rj   r   rt   bytesr7   eventsr   re   rf   rg   rh   r?   r>   rk   rl   r=   rm   rn   ro   rp   rq   rr   rs   s   ``````` `  @@@@@@@@@@@@@@@@r3   r   r   c   s     H 2$$W\22J 'G(F)W\J34#3n$G,N&::&2J%F%J-NT\**G
WdHM8WRU
V
V
VC'-5M +7K K K K K K K K K K K K K K K K K K K K K K K K K K K K KX  rQ   )!__doc__rw   kombu.asynchronous.timerr   celeryr   
celery.appr   rT   celery.exceptionsr   celery.utils.importsr   celery.utils.logr   celery.utils.safereprr	   celery.utils.timer
   rE   r   r   r   __all____name__ru   r4   r7   r]   rj   	to_systemr   r   r   rQ   r3   <module>r      s>   - -  1 1 1 1 1 1       * * * * * * . . . . . . / / / / / / ' ' ' ' ' ' * * * * * * & & & & & & ' ' ' ' ' '            
	H		&G &G &GRD D DD FL!+5-m  m  m  m  m  m rQ   