
    lhI                     V   d dl Z d dlmZ d dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZmZmZ d dlmZmZm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m Z m!Z!m"Z" d dl#m$Z$ e$rEd 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,m-Z-m.Z.m/Z/ d dlm0Z0  e)de&de%f         Z1	 d dl2m3Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? e<e:e;fZA G d  d!e      ZBd" ZCd# ZDd1d$ZEd% ZF G d& d'      ZGd( ZHd) ZId* ZJd+ ZKd, ZLd- ZMd. ZNd/ ZOd0 ZPy# e@$ r	  ed      w xY w)2    N)Mappingwraps)isolation_scope)continue_trace)OP
SPANSTATUSSPANDATA)_check_minimum_versionIntegrationDidNotEnable)_patch_beat_apply_entry_patch_redbeat_apply_async_setup_celery_beat_signals)_now_seconds_since_epoch)ignore_logger)BAGGAGE_HEADER_NAMETransactionSource)Baggage)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionreraise)TYPE_CHECKING)Any)Callable)List)Optional)TypeVar)Union)EventProcessorEventHintExcInfo)SpanF.)bound)VERSION)Task)task_has_custom)IgnoreRejectRetrySoftTimeLimitExceeded)ProducerzCelery not installedc                   8    e Zd ZdZde Z	 	 	 ddZed        Zy)CeleryIntegrationceleryzauto.queue.Nc                 l    || _         || _        || _        t                t	                t        |       y N)propagate_tracesmonitor_beat_tasksexclude_beat_tasksr   r   r   )selfr5   r6   r7   s       y/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/celery/__init__.py__init__zCeleryIntegration.__init__@   s1     !1"4"4!"$"#56    c                      t        t        t               t                t	                t                t                t                t        d       t        d       t        d       y )Nzcelery.worker.jobzcelery.app.tracezcelery.redirected)	r   r1   CELERY_VERSION_patch_build_tracer_patch_task_apply_async_patch_celery_send_task_patch_worker_exit_patch_producer_publishr    r;   r9   
setup_oncezCeleryIntegration.setup_onceO   sL     	0.A!!!
 	)*() 	)*r;   )TFN)__name__
__module____qualname__
identifieroriginr:   staticmethodrD   rC   r;   r9   r1   r1   <   s7    J:,'F  	7 + +r;   r1   c                     t               5  t        j                         }|j                  |j                  j	                  |        d d d        y # 1 sw Y   y xY wr4   )r   
sentry_sdkget_current_scopespan
set_status)statusscopes     r9   _set_statusrR   e   sG    	$	& *,,.::!JJ!!&)* * *s   <AAc                 b   t        j                         }|j                  t              y t	        |d   t
              rt        d       y t        d       t        | d      rt	        |d   | j                        ry t        ||j                  ddd      \  }}t        j                  ||	       y )
N   abortedinternal_errorthrowsr2   F)typehandled)client_options	mechanism)hint)rL   
get_clientget_integrationr1   
isinstanceCELERY_CONTROL_FLOW_EXCEPTIONSrR   hasattrrW   r   optionscapture_event)taskexc_infoclienteventr\   s        r9   _capture_exceptionrh   m   s    ""$F/08(1+=>I !tX:hqk4;;#G&~~#6KE4 U.r;   c                       fd}|S )Nc                 \   t               5  | j                  di       }|d<   | j                  di       }j                  d|d<   d d d        d|v r>t               5  t        |d   d   t              rdd	t        d
      g| d<   d d d        | S | S # 1 sw Y   MxY w# 1 sw Y   | S xY w)Ntagscelery_task_idextra)	task_nameargskwargsz
celery-jobre   r   r2   r.   namefingerprint)r   
setdefaultrq   
issubclassr.   getattr)rg   r\   rk   rm   ro   rp   rd   uuids       r9   event_processorz._make_event_processor.<locals>.event_processor   s     )* 	##FB/D%)D!"$$Wb1E!YY #E,		 ,. d:.q13HI /fd3,E-( u'	 	 s   =B*B!B!B+rC   )rd   rv   ro   rp   requestrw   s   ````  r9   _make_event_processorry      s    0 r;   c                    | j                         }t               5  t        t        j                         j                  |            }|r|j                  ddt               z  i       |j                  dt               i       |rS|j                  t              }|j                  t              }|xs |}|r|rt        j                  |      }t        j                  |      }	|	j                  j                  |j                         dj                  |	j                  |j                  fD 
cg c]  }
|
|
dk7  r|
 c}
      |	_        |	j                  d	      }|j                  |       |r	||t        <   |j!                  d
i       j                  |       |r||d
   t        <   |j#                         D ]  \  }}|j%                  d      s||d
   |<   ! ddd       |S c c}
w # 1 sw Y   |S xY w)z
    Updates the headers of the Celery task with the tracing information
    and eventually Sentry Crons monitoring information for beat tasks.
    )rN   z sentry-monitor-start-timestamp-sz%.9fsentry-task-enqueued-time,N T)include_third_partyheaderszsentry-)copyr   dictrL   get_isolation_scopeiter_trace_propagation_headersupdater   getr   r   from_incoming_headersentry_itemsjointhird_party_items	serializers   items
startswith)original_headersrN   r6   updated_headersr   existing_baggagesentry_baggagecombined_baggageincomingcombinedxkeyvalues                r9   _update_celery_task_headersr      s    '++-O	$	& >< **,KKQUKV
 NN6.091 	(*B*DE	
 .223FG$[[)<=N-A1A"2 #778HI"77G%%,,X-B-BC-0XX %66$66" =Q"W 	.* $,#5#5$#5#O ""7+7G 34 &&y"5<<WEBR	*+>? .335 <
U>>),6;OI.s3<y><@ =E><@ s%   DG)/G$
?BG)
G)$G))G3c                       e Zd Zd Zd Zy)NoOpMgrc                      y r4   rC   )r8   s    r9   	__enter__zNoOpMgr.__enter__       r;   c                      y r4   rC   )r8   exc_type	exc_value	tracebacks       r9   __exit__zNoOpMgr.__exit__   r   r;   N)rE   rF   rG   r   r   rC   r;   r9   r   r      s    r;   r   c                 .     t                fd       }|S )Nc                     t        j                         j                  t              }| 	| i |S |j	                  d      xs i }|j                  d|j                        }|s 	| i |S t        | d   t              r| d   j                  }n)t        |       dkD  rt        | d   t              r| d   }nd}t        j                         j                  dk(  }|s4t        j                  t        j                   |t        j"                        n	t%               }|5 }t'        |||j(                        |d<    	| i |cd d d        S # 1 sw Y   y xY w)Nr   zsentry-propagate-tracesr   rT   z<unknown Celery task>zcelery-beatoprq   rI   )rL   r]   r^   r1   r   popr5   r_   r)   rq   lenstrr   _name
start_spanr   QUEUE_SUBMIT_CELERYrI   r   r   r6   )
ro   rp   integrationkwarg_headersr5   rn   task_started_from_beatspan_mgrrN   fs
            r9   apply_asyncz#_wrap_task_run.<locals>.apply_async   sQ   
 !++-==>OPd%f%%

9-3(,,%{'C'C
  d%f%%d1gt$QIY]z$q'37QI/I!+!?!?!A!G!G=!X * !!))(//  	  	& ;t[%C%C!F9 d%f%		& 	& 	&s   "E		Er   )r   r   s   ` r9   _wrap_task_runr      s"    
1X'& '&R r;   c                 X     t              t        t               fd              }|S )Nc            
         t               5 }d|_        |j                          |j                  t	        g| i |       d }t               5  | d   j                  d      xs i }t        |t        j                  dt        j                  t        j                        }j                  |_        |j                  t         j"                         d d d        | | i |cd d d        S t%        j&                  |dj                  t)        | d         | d   d	i
      5   | i |cd d d        cd d d        S # 1 sw Y   mxY w# 1 sw Y   nxY w	 d d d        y # 1 sw Y   y xY w)Nr2      r   zunknown celery task)r   rq   sourcerI   
celery_jobrT      )rd   ro   rp   )custom_sampling_context)r   r   clear_breadcrumbsadd_event_processorry   r   r   r   r   QUEUE_TASK_CELERYr   TASKr1   rI   rq   rO   r	   OKrL   start_transactionlist)ro   rp   rQ   transactionr   r   rd   s        r9   _innerz_wrap_tracer.<locals>._inner/  si     $	*%"EK##%%%&;D&R4&R6&RSK -. 
6q'++i06B,++.,11,33 $(99 &&z}}5
6 "$)&)-$	* $	*0 --  $		 !%T!W"&q'#) * $)&)* *1$	* $	*
6 
6* * *1$	* $	* $	*sC   AEBD=E,6E"E	*	E=E	E	E	EE()r   r   r1   rd   r   r   s   `` r9   _wrap_tracerr   &  s3     1X 115&* 6 &*P Mr;   c                     t               5  | j                  j                  }|rG|j                  d      }|j                  d      dk(  r"| |j	                  t
        j                  |       ddd       y# 1 sw Y   yxY w)z-Set "messaging.destination.name" tag for spanrouting_keyexchanger}   N)r   rx   delivery_infor   set_datar
   MESSAGING_DESTINATION_NAME)rd   rN   r   r   s       r9   _set_messaging_destination_namer   \  ss     
%	& P22'++M:K  ,2{7N hAA;OP P Ps   A A44A=c                 <     t        t               fd       }|S )Nc                     	 t        j                  t        j                  j                  t
        j                        5 }t        |       d }t               5  j                  j                  Hdj                  j                  v r0t               j                  j                  j                  d      z
  }d d d        |%|dz  }|j                  t        j                  |       t               5  |j                  t        j                   j                  j"                         d d d        t               5  |j                  t        j$                  j                  j&                         d d d        t               5  |j                  t        j(                  j*                  j-                         j.                  j0                         d d d         | i |cd d d        S # 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ?xY w# 1 sw Y   y xY w# t2        $ rK t5        j6                         }t               5  t9        |       d d d        n# 1 sw Y   nxY wt;        |  Y y w xY w)Nr   r{   i  )rL   r   r   QUEUE_PROCESSrq   r1   rI   r   r   rx   r   r   r   r   r
   !MESSAGING_MESSAGE_RECEIVE_LATENCYMESSAGING_MESSAGE_IDidMESSAGING_MESSAGE_RETRY_COUNTretriesMESSAGING_SYSTEMapp
connection	transportdriver_type	Exceptionsysre   rh   r   )ro   rp   rN   latencyre   r   rd   s        r9   r   z_wrap_task_call.<locals>._innert  s   )	&&##YY(// #* /d;02 ,,874<<;O;OO":"<t||?S?S?W?W7@ # &tOGMM("L"LgV02 RMM("?"?QR 12 MM >>@T@T
 12 MM 11++-77CC $)&)G#* #* R R 
 ;#* #*H  	||~H,. 3"423 3 3X		s   >H# HAG&99H25G3'H95G?.H AHH	H# &G0	+H3G<	8H?H	HH	HH H#  H# #'I7
I 	I7 I)	%I76I7)r   r1   r   s   `` r9   _wrap_task_callr   i  s'       115+ 6+Z Mr;   c                  H    dd l mc m}  | j                  fd}|| _        y )Nr   c                    t        |dd      s\t        |d      r.t        |t        |      j                        t        |      _        nt        ||j
                        |_        d|_        t        | | |g|i |      S )N_sentry_is_patchedF__call__T)ru   r*   r   rX   r   runr   r   )rq   rd   ro   rp   original_build_tracers       r9   sentry_build_tracerz0_patch_build_tracer.<locals>.sentry_build_tracer  st    t159 tZ0&5dDJ<O<O&PT
#*4:
 '+D#D"7d"TT"TV"TUUr;   )celery.app.tracer   tracebuild_tracer)r   r   r   s     @r9   r>   r>     s%    $$!..V" -Er;   c                  H    t        t        j                        t        _        y r4   )r   r)   r   rC   r;   r9   r?   r?     s    %d&6&67Dr;   c                  D    ddl m}  t        | j                        | _        y )Nr   Celery)r2   r   r   	send_taskr   s    r9   r@   r@     s    %f&6&67Fr;   c                  B    ddl m}  | j                  fd}|| _        y )Nr   )Workerc                     	  | i |t               5  t        j                         j                  t              	 t        j
                          d d d        S # 1 sw Y   S xY w# t               5  t        j                         j                  t              	 t        j
                          d d d        w # 1 sw Y   w xY wxY wr4   )r   rL   r]   r^   r1   flush)ro   rp   original_workloops     r9   sentry_workloopz+_patch_worker_exit.<locals>.sentry_workloop  s    	'$d5f5,. '))+;;<MN  $$&' ' ',. '))+;;<MN  $$&' ' 's.   A& =AA#	&C1=B7.	C7C <C)billiard.poolr   workloop)r   r   r   s     @r9   rA   rA     s     
 %
' &FOr;   c                  l    t         j                  t        t              fd       } | t         _        y )Nc                 2   |j                  di       }t        |t              si }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }t        j                  t
        j                  |t        j                        5 }	| |	j                  t        j                  |       |dk(  r"| |	j                  t        j                  |       | |	j                  t        j                  |       t               5  |	j                  t        j                  | j                   j"                  j$                         d d d         
| g|i |cd d d        S # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   rd   r   r   r   r   r   r}   )r   r_   r   rL   r   r   QUEUE_PUBLISHr1   rI   r   r
   r   r   r   r   r   r   r   r   )r8   ro   rp   kwargs_headersrn   task_idr   r   r   rN   original_publishs             r9   sentry_publishz/_patch_producer_publish.<locals>.sentry_publish  s`     Ir2.'2  N"&&v.	 $$T* $$Y/jj/::j)""$++
 	; "h;;WE2~+"9 hAA;O"hDDgN,. --t/H/H/T/T
 $D:4:6:+	; 	;  !	; 	;s%   /A6F%?F$FF
	FF)r/   publishr   r1   )r   r   s    @r9   rB   rB     s6    '' 13CD'; E';R &Hr;   r4   )Qr   collections.abcr   	functoolsr   rL   r   sentry_sdk.apir   sentry_sdk.constsr   r	   r
   sentry_sdk.integrationsr   r   r   #sentry_sdk.integrations.celery.beatr   r   r   $sentry_sdk.integrations.celery.utilsr   sentry_sdk.integrations.loggingr   sentry_sdk.tracingr   r   sentry_sdk.tracing_utilsr   sentry_sdk.utilsr   r   r   r   typingr   r   r   r   r   r   r    sentry_sdk._typesr!   r"   r#   r$   r%   r&   r2   r(   r=   celery.app.taskr)   r   r*   celery.exceptionsr+   r,   r-   r.   kombur/   ImportErrorr`   r1   rR   rh   ry   r   r   r   r   r   r   r>   r?   r@   rA   rB   rC   r;   r9   <module>r     s&   
 #   & ) 6 6 U U 
 J 9 E ,  !FF'8CH-.A/0$0  
 #(!8 &+ &+R*/2:GT ,^3l
P9x-48
8&0.&]  /
-
../s   3$D D(