
    hk              
       \   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZmZmZ ddlmZ ddlmZ ddlmZ ddl m!Z!m"Z"m#Z#m$Z$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l0m1Z1m2Z2m3Z3 dZ4ddl5m6Z6  e)e7      Z8dZ9dZ:dZ;dZ<dZ=dZ>dZ? edd      Z@ e@e>dej                  d d       ZB e@e=d!ej                  dd      ZD e@e<d"ej                  d d       ZF e@e;d#ej                  dd      ZG e@e;d$ej                  d d       ZIej                  j                  ZLej                  j                  ZNej                  j                  ZPej                  ZQej                  ZRej                  ZSej                  ZTej                  ZUej                  ZVej                  ZW eXeSeUeTh      ZYg ZZi Z[ ed%d&      Z\d' Z]d( Z^d) Z_d* Z` G d+ d,      Zad9d-Zbddd.ead/d/dej                  e\eYf
d0Zdd9d1Zed2 Zfedfd3Zgeddfd4Zhd5 Zid9d6Zjefd7Zkd8 Zly):zTrace task execution.

This module defines how the task execution is traced:
errors are recorded, handlers are applied and so on.
    N)
namedtuple)warn)ExceptionInfoExceptionWithTraceback)EncodeError)loads)prepare_accept_content)	safe_reprsafe_str)current_appgroupsignalsstates)_task_stack)Context)Task)BackendGetMetaErrorIgnoreInvalidTaskErrorRejectRetry)AsyncResult)
get_logger)gethostname)
mro_lookup)saferepr)get_pickleable_etypeget_pickleable_exceptionget_pickled_exception)	TraceInfobuild_tracer
trace_tasksetup_worker_optimizationsreset_worker_optimizations)successful_requestszTask %(name)s[%(id)s] receivedzATask %(name)s[%(id)s] succeeded in %(runtime)ss: %(return_value)sz.Task %(name)s[%(id)s] %(description)s: %(exc)sz%Task %(name)s[%(id)s] %(description)szTask %(name)s[%(id)s] %(exc)sz$Task %(name)s[%(id)s] retry: %(exc)slog_policy_t)formatdescriptionseverity	tracebackmailrejected   ignoredzINTERNAL ERRORzraised expectedzraised unexpected
trace_ok_t)retvalinforuntimeretstrc                 8    t         j                  | |d|i       y)zzLog 'fmt % context' with severity 'INFO'.

    'context' is also passed in extra with key 'data' for custom handlers.
    data)extraN)loggerr1   )fmtcontexts     L/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/app/trace.pyr1   r1   {   s    
 KKWVW$5K6    c                 J    t        | j                  |t        t        hdg      S )z+Return true if the task overrides ``attr``.zcelery.app.task)stopmonkey_patched)r   	__class__BaseTaskobject)taskattrs     r:   task_has_customrD      s$    dnnd(F1C&7%8: :r;   c                     t        |t              rt        S t        |t              rt        S |j
                  rt        S | j                  rt        || j                        rt        S t        S N)

isinstancer   log_policy_rejectr   log_policy_ignoreinternallog_policy_internalthrowslog_policy_expectedlog_policy_unexpected)rB   einfoexcs      r:   get_log_policyrQ      sO    #v  	C	   	"";;:c4;;7&&$$r;   c                 $    t        | dd      xs |S )z8Use 'shadow' in request for the task name if applicable.shadowN)getattr)requestdefaults     r:   get_task_namerW      s     7Hd+6w6r;   c                   H    e Zd ZdZdZddZ	 ddZd Zd ZddZ	dd	Z
d
 Zy)r    z!Information about task execution.stater0   Nc                      || _         || _        y rF   rY   )selfrZ   r0   s      r:   __init__zTraceInfo.__init__   s    
r;   c                     |j                   r|j                  }n|r|j                  rd}n| }	 t        | j                  t
        | j                  i| j                     ||||      S )NT)store_errorscall_errbacks)ignore_resultstore_errors_even_if_ignoredstore_eager_resultRETRYhandle_retryFAILUREhandle_failurerZ   )r\   rB   reqeagerr`   r_   s         r:   handle_error_statezTraceInfo.handle_error_state   sr    <<Lt..L$9L4$$T((
 ** C#/$13 	3r;   c                 :    | j                  ||t                      y rF   
_log_errorr   r\   rB   rh   kwargss       r:   handle_rejectzTraceInfo.handle_reject       c=?3r;   c                 :    | j                  ||t                      y rF   rl   rn   s       r:   handle_ignorezTraceInfo.handle_ignore   rq   r;   c                 .   t        j                         \  }}}	 | j                  }t        |||f      }	|r=|j                  j                  |j                  |j                  |	j                  |       |j                  |j                  |j                  |j                  |j                  |	       t        j                  j                  ||||	       t        t         |j                  t#        ||j$                        t'        |      d       |	~S # ~w xY w)zHandle retry exception.rU   )senderrU   reasonrO   )idnamerP   )sysexc_infor0   r   backendmark_as_retryrx   rP   r*   on_retryargsro   r   
task_retrysendr1   	LOG_RETRYrW   ry   str)
r\   rB   rh   r_   ro   type__tbrw   rO   s
             r:   re   zTraceInfo.handle_retry   s     ||~q"	[[F!5&""56E**FFFJJ +  MM&**cffchh

EJ##4+1 $ @ff%c49956{ 
 s   C5D Dc           	      r   | j                   }t        |      }|j                  t        j                         \  }}|_        t        t        |            }t        |||j                  f      }	|j                  j                  |j                  ||	j                  |||       |j                  ||j                  |j                  |j                  |	       t        j                   j#                  ||j                  ||j                  |j                  |j                  |	       | j%                  |||	       |	S )zHandle exception.r{   )rU   store_resultr`   )rv   task_id	exceptionr   ro   r*   rO   )r0   r   __traceback__rz   r{   r   typer   r|   mark_as_failurerx   r*   
on_failurer   ro   r   task_failurer   rm   )
r\   rB   rh   r_   r`   orig_excrP   r   exc_typerO   s
             r:   rg   zTraceInfo.handle_failure   s   ;;&x0$ '*lln#Aq##'X7 #s7H7H'IJ$$FFCl' 	% 	
 	SVVSXXszz5A!!svv,/chh),,/,=,=(-	 	" 	/
 	c5)r;   c           
         t        |j                        x}|_        t        |t              r|j                  x}|_        t        |      t        |j                        |j                  |j                  d      xs t        |j                        |j                  d      xs t        |j                        f\  }}}}}	t        |||      }
|j                  |j                  t        ||j                         ||||	|
j"                  |j$                  d	}t&        j)                  |
j*                  |
j,                  j/                         ||
j                  r|nd d|i       y )Nargsrepr
kwargsrepr)	hostnamerx   ry   rP   r*   r   ro   r(   rJ   r5   )r{   r6   )r   r   rG   r   rP   r
   r   r*   r{   getr   ro   rQ   r   rx   rW   ry   r(   rJ   r7   logr)   r'   strip)r\   rB   rh   rO   eobjr   r*   r{   sargsskwargspolicyr9   s               r:   rm   zTraceInfo._log_error   s"   !6u!GGud23%)XX-D5?dOU__%NNGGJ69SXX#6GGL!:Yszz%::
6	9hw  eT2 &&!#tyy1"!--

 	

6??FMM$7$7$97(.(8(8Hd '* 	 	,r;   rF   )FT)T)TT)__name__
__module____qualname____doc__	__slots__r]   rj   rp   rs   re   rg   rm    r;   r:   r    r       s2    +#I
 7;3 440<,r;   r    c                 D   d }| 2t        | d      r| j                  }n1t        j                         \  }}}nt        j                         \  }}}|A	 |j                  j                          |j                  j                   |j                  }|@y y # t        $ r Y w xY w)Nr   )	hasattrr   rz   r{   tb_frameclearf_localsRuntimeErrortb_next)rP   r   r   s      r:   traceback_clearr     s     
B
3(""B||~HAq"<<>1b
.	KKKK   ZZ .  		s   0B 	BBTFc                     	
 !"#$% t        d      rnj                  |xs j                  }j                  }j                  % xr j                  xr | %r|sj
                  rdn xr | j                  j                  xs j                  xr. j                  j                  xr j                  j                  xs
 t               j                  j                  |j                  |j                  d#d$d"t        d      rj                   #t        d      rj"                  $t        d      rj$                  "t'        j(                         j*                  }|j,                  |j.                  t0        j,                  t0        j.                  t2        j5                  t6        j8                        j:                  t<        j>                  j@                  t<        jB                  j@                  t<        jD                  j@                  !ddl#m$} |jJ                   tL        dffd		d	  !"#$
%fd
	}|S )a=  Return a function that traces task execution.

    Catches all exceptions and updates result backend with the
    state and result.

    If the call was successful, it saves the result to the task result
    backend, and sets the task status to `"SUCCESS"`.

    If the call raises :exc:`~@Retry`, it extracts
    the original exception, uses that as the result and sets the task state
    to `"RETRY"`.

    If the call results in an exception, it saves the exception as the task
    result, and sets the task state to `"FAILURE"`.

    Return a function that takes the following arguments:

        :param uuid: The id of the task.
        :param args: List of positional args to pass on to the function.
        :param kwargs: Keyword arguments mapping to pass on to the function.
        :keyword request: Request dict.

    __call__TNbefore_start
on_successafter_returnr   )canvasc                 z    r  ||      }|j                  	| |      }|||j                  |j                  fS )N)ri   r`   )rj   rZ   r0   )
rU   rP   rZ   r`   IRInfori   	propagaterB   s
         r:   on_errorzbuild_tracer.<locals>.on_errory  sL      'm ! 
 !QWWahh&&r;   c                    d x}x}x}x}x}}	d }
 $       }	 	 |j                    t        |xs i |d|      }
|
j                  xr |
j                  j                  dd      }r|r}|
j                  t        v r 6||||      S t        |
j                        }	 |j                  }	|	t        k(  r3t        t        |
j                  t        |
%      dd        6||||      S  .2       |
j                  xs | }!r|
j                  j                  d      nd } -|
       	 +rt!        2| 2||	        #| 2       7r&2j"                  j%                  | ' d
t&        |
       	 4r
 4| ||        |i |x}}t        }		 2j(                  j*                  }|rt-        2j(                  j*                        dkD  rg g }}|D ]?  } 0|      }t/        |t0              r|j3                  |       /|j3                  |       A |D ]  }|j5                  |f| ||        |rCt1        |      j5                  |f| ||       n! 0|d         j5                  |f| ||       |
j6                  }|r/ 0|j9                               }|j5                  |f|| ||       2j"                  j;                  | ||
,       t=        |/      } $       |z
  }5r 5|| ||       1rt?        2|       rZt        t@        | t        |
%      |||
j                  d      xs tC        |      |
j                  d      xs tC        |      d       	 |	vr3r 3|	|| ||d        	 *rta        2| 2||||	        )         (        s"	 2j"                  jc                           "         6||||      S # t        $ r t        d      w xY w# t        $ r Y w xY w# tD        $ r} &|
|      \  }}}	}Y d }~d }~ww xY w# tF        $ rY} tH        |      tK        d      }}|j                  |jL                  }}	|jO                  2|
       tQ        |       Y d }~d }~wtR        $ rY} tT        |      tK        d      }}|j                  |jL                  }}	|jW                  2|
       tQ        |       Y d }~nd }~wtX        $ r+} &|
|tZ        d      \  }}}	}tQ        |       Y d }~d }~wt\        $ r$} &|
|      \  }}}	}tQ        |       Y d }~d }~wt^        $ r  w xY w# td        tf        th        f$ r  t\        $ r#}tj        jm                  d|d       Y d }~d }~ww xY w#  )         (        se	 2j"                  jc                           "        w # td        tf        th        f$ r  t\        $ r"}tj        jm                  d|d       Y d }~w d }~ww xY ww xY w# 	 *rta        2| 2||||	        )         (        se	 2j"                  jc                           "        w # td        tf        th        f$ r  t\        $ r"}tj        jm                  d|d       Y d }~w d }~ww xY ww #  )         (        se	 2j"                  jc                           "        w # td        tf        th        f$ r  t\        $ r"}tj        jm                  d|d       Y d }~w d }~ww xY ww xY wxY w# th        $ r  t\        $ r:}to        2| ||||       r tq        2|      }|
 &|
|      \  }}}}Y d }~d }~ww xY w)Nz'Task keyword arguments is not a mappingF)r   called_directlyro   redeliveredappz$Task already completed successfully.)rx   ry   r(   priority)rv   r   rB   r   ro   )pidr   ru   r-   )	parent_idroot_idr   r   )chainr   r   r   )rv   resultr   r   )rx   ry   return_valuer2   r   ro   TrJ   )r`   )rv   r   rB   r   ro   r0   rZ   zProcess cleanup failed: %rr   )9itemsAttributeErrorr   r   delivery_infor   rx   r%   r   rZ   SUCCESSr1   LOG_IGNOREDrW   r   r   send_prerunr|   r   STARTEDrU   	callbackslenrG   r   appendapply_asyncr   popmark_as_doner   send_successLOG_SUCCESSr
   r   r   REJECTEDr   r0   rp   r   r   IGNOREDrs   r   rd   	ExceptionBaseExceptionsend_postrunprocess_cleanupKeyboardInterrupt
SystemExitMemoryErrorr7   error_signal_internal_errorreport_internal_error)8uuidr   ro   rU   r   r   TRstrr0   rZ   task_request
time_startr   rr   task_priorityr   sigsgroupssiggroup_r   _chsigrP   r   IGNORE_STATESr   
_does_infor   deduplicate_successful_tasksri   funr   inherit_parent_priorityloader_cleanuploader_task_init	monotonicry   r   r   pop_requestpop_taskpostrun_receiversprerun_receiverspublish_resultpush_request	push_taskresultrepr_maxsize	signaturesuccess_receiversrB   task_after_returntask_before_starttask_on_successr/   track_starteds8                            r:   r"   z build_tracer.<locals>.trace_task  s    -100A00D06E[
m	9?
 #7=bt38IL (55 T+99==mUS +??&99%aAt44S99GGE '[".//$1,$E+Q+ 
  *!Q488dO"**2dG' )66:::F-1 &A8#tT%)&: t, LL--cx@' , . [()$f=!$d!5f!55A#E*A %)LL$:$:	$"4<<#9#9:Q>/12f+4C*3CS*AC'1#u'=(.c(:(,C(8 ,5 /5F$*$6$6)/	261> %7 %& /5 $($)$C$8$D$D)/	261> %E %& !*)A,C @ L L%+Iw-: !M !" !- 2 2 %.uyy{%DF"..!'	*.)6 / 
 11 &,  (+=>%K*4*+FD$G,(VD% &*(5lD(I04+,(4(8(8(D(W	RV*6*:*:<*H*]IV\L]/  -()!64vt8($D$T*.v,2%A JM 8 LL88:*, !Q4((W " ?&=? ??  + N ' J.6|S.I+1eVJI  )#.t0LqA$%GGQXX6EOOD,7#C(( )-}d/KqA$%GGQXX6EOOD,7#C(( )*2$c5+G'Aq%#C((  )*2<*E'Aq%#C(($ r !2:{K "!( 8"LL)Es26 ) 8 88 JM 8 LL88:*, 1:{K "!( 8"LL)Es26 ) 8 88 !8($D$T*.v,2%A JM 8 LL88:*, 1:{K "!( 8"LL)Es26 ) 8 88 ! JM 8 LL88:*, 1:{K "!( 8"LL)Es26 ) 8 88 !  	 	9"4tVWcJ%dC0A'%lC8
1a	9s  N6 A[3 [3 O ';[3 #?[3 #AW* 'P D?O B!W* %U0 9[3 
!T- 6O[3 	O[3 O[3 	O?'O:5W* :O??W* 	T*AQW* T*+AR?9W* ?T* S1+W* 1T*=TW* T**W* -U-
U("[3 (U--[3 0W'!V$#W'$W#WW'W##W''[3 *[0,Y6 [0!X32[03Y2Y-([0-Y22[06[-!Z*)[-*[)[$[-$[))[--[00[3 3\?/\::\?rF   )'rD   runloaderra   r  rc   conftask_acks_late	acks_late#worker_deduplicate_successful_tasksr|   
persistentr   task_inherit_parent_priorityon_task_initon_process_cleanupr   r   r   osgetpidrequest_stackpushr   r   r7   isEnabledForloggingINFOr   r   task_prerun	receiverstask_postruntask_successceleryr   maybe_signaturerf   )&ry   rB   r  r   r_   r   ri   r   r   r   r/   r   ra   r  r   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  s&   `` ` ```````    @@@@@@@@@@@@@@@@@@@@@@r:   r!   r!   &  s   B "$
3$C!szzF&&M&&MIL4#5#5#Km:KM ]t'>'>"8='8%(XX%<%<%N %?(+(T(T%?(+(>(> ! (;=H!hhCC**..NOt^, --t\*//t^, --
))+C&&M %%L##K  IH$$W\\2J00**44,,66,,66&&I%,D ' '}) }) }) }) })~ r;   c           	          |si n|}	 | j                   t        | j                  | fi || _         | j                  ||||      S # t        $ r@}t	        | |||||       t        t        | |      t        t        |      dd      cY d}~S d}~ww xY w)zTrace task execution.Ng        )		__trace__r!   ry   r   r   r/   r   r    rf   )rB   r   r   ro   rU   optsrP   s          r:   r"   r"   D  s    bWG`>>!)$))TBTBDN~~dD&':: `tT4#F/c:Igs<SUXZ^__`s   ;A 	B5BBBc           
         	 t        j                         \  }}}t               }t        |j                        |_        t        |j                        |_        t        j                  j                  | |||||||       ~y# ~w xY w)zJSend a special `internal_error` signal to the app for outside body errors.)rv   r   r   ro   rU   r   r*   rO   N)
rz   r{   r   r   r   r   r   r   task_internal_errorr   )	rB   r   r   ro   rU   rP   r   r   rO   s	            r:   r   r   P  sy    <<>1b25??C)%**5
##(( 	) 		
 Bs   A=B Bc                 P   |xs t        j                         }d }	|r0t        |j                  j                        }
 |||||
      \  }}}	n|\  }}}	t               } |j                  |||ddfi |	xs i  t        |j                  |    |||||      \  }}}}|rd||fS d||fS )NacceptFr   ro   r   is_eagerr   r-   r   )	r   _get_current_objectr	   r  accept_contentr   updater"   tasks)ry   r   rU   bodycontent_typecontent_encodingr   r   extra_requestembedr   r   ro   r   r   r   r   r   s                     r:   trace_task_retr,  e  s     
2002CE'(?(?@#, 0
fe #fe}HGNN%  
" syy#T67EMAq!TAq!9+4|+r;   c	                     |st         n|}d }
|\  }}}|r |||||      \  }}}
n|\  }}}
 |j                  |||ddfi |
xs i  ||    j                  ||||      \  }}}}|rd||fS d||fS )Nr  Fr!  r-   r   )
_localizedr%  r  )rB   r   rU   r'  r(  r)  r   _locr   r   r+  r&  r   r   ro   r   r   r   r   s                      r:   fast_trace_taskr0  {  s     ":tDE"E68#, 0
fe #feGNN%  
" $K))dFGMAq!T Aq!9+4|+r;   c                     t        j                         \  }}}	 | j                  j                  |d      }t	        |||fd      }t        t        dj                  ||j                                     |~S # ~w xY w)NpickleTr   z'Exception raised outside body: {!r}:
{})	rz   r{   r|   prepare_exceptionr   r   RuntimeWarningr'   r*   )rB   rP   _type_value_tbr{   s         r:   r   r     sv    E63//X> %!5E^6==X'')* 	+ Cs   AA7 7A:c                    |xs
 t               }t                | j                          | j                          | j	                          | j
                  t        | j                  j                        |gt        dd d| _
        y)z#Setup worker related optimizations.NT)r   _install_stack_protectionset_currentset_defaultfinalize_tasksr	   r  r$  r.  use_fast_trace_task)r   r   s     r:   r#   r#     sj    (;=H  OOOO LLN 	

sxx667JqM #Cr;   c                     	 t        t        d       	 t        j	                  d      t        _        d| _        y# t        $ r Y 2w xY w# t        $ r
 Y d| _        yw xY w)z*Reset previously configured optimizations._stackprotectedBaseTask.__call__FN)delattrr@   r   _patchedr   r   KeyErrorr>  r   s    r:   r$   r$     sb    +,$LL)<= $C    #Cs    9 A 	AA	AAc                      t        t        dd      s5t        j                  xt        d<   fd} | t        _        dt        _        y y )Nr@  FrA  c                     | j                   }|j                  }|r?|j                  s3t        |      dk(  r%|j                  sd|_         | j
                  |i |S  | g|i |S )Nr-   )r  top
_protectedr   r   r  )r\   r   ro   stackrh   origs        r:   __protected_call__z5_install_stack_protection.<locals>.__protected_call__  se    &&E))C3>>J!OC,?,?!"txx000.t.v..r;   T)rT   r@   r   rC  r@  )rK  rJ  s    @r:   r9  r9    sD     8.6/7/@/@@$%	/ /#'  7r;   rF   )mr   r  r  rz   timecollectionsr   warningsr   billiard.einfor   r   kombu.exceptionsr   kombu.serializationr   loads_messager	   kombu.utils.encodingr
   r   r  r   r   r   r   celery._stater   celery.app.taskr   r   r@   celery.exceptionsr   r   r   r   r   celery.resultr   celery.utils.logr   celery.utils.nodenamesr   celery.utils.objectsr   celery.utils.safereprr   celery.utils.serializationr   r   r   __all__celery.worker.stater%   r   r7   LOG_RECEIVEDr   LOG_FAILURELOG_INTERNAL_ERRORr   LOG_REJECTEDr   r&   WARNrH   r  rI   CRITICALrK   rM   ERRORrN   r  r   r   r  r   r  r   r   r   r   r   rd   rf   EXCEPTION_STATES	frozensetr   r.  rC  r/   r1   rD   rQ   rW   r    r   r   r!   r"   r   r,  r0  r   r#   r$   r9  r   r;   r:   <module>rh     sc  
  	 
  "  @ ( 6 6 4 6 6 % # , Z Z % ' . + * l l
 4	H	


 


	 >
 !z7<<AN  iq!L "('*:*:Aq  #"GLL!Q  %$gmmQ  !!&&##((##((
..
..
..??
..** 7E845 
&MN
7:
%7p, p,f, %)4du4>>j,[|	`, ,9d,. -:!,,
#< $/ 
$(r;   