a
    xd&                     @   s  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	 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 erd 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 ededef dZz4d dl m!Z" d dl#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) W n e*y8   edY n0 e%e&e'fZ+G dd deZ,dd Z-dd Z.dd Z/d(d d!Z0d"d# Z1d$d% Z2d&d' Z3dS ))    )absolute_importN)Hub)TRANSACTION_SOURCE_TASK)capture_internal_exceptionsevent_from_exception)Transaction)reraise)IntegrationDidNotEnable)ignore_logger)MYPYwraps)Any)TypeVar)Callable)Optional)EventProcessorEventHintExcInfoF.)bound)VERSION)SoftTimeLimitExceededRetryIgnoreReject)task_has_customzCelery not installedc                   @   s&   e Zd ZdZdddZedd ZdS )	CeleryIntegrationceleryTc                 C   s
   || _ d S N)propagate_traces)selfr"    r$   V/var/www/html/Ranjet/env/lib/python3.9/site-packages/sentry_sdk/integrations/celery.py__init__0   s    zCeleryIntegration.__init__c                     st   t dk rtddd lm  m}  | j  fdd}|| _ddlm} t|j	|_	t
  td td td	 d S )
N)   zCelery 3 or newer required.r   c                    s`   t |ddsBt|dr.t|t|jt|_nt||j|_d|_t| | |g|R i |S )N_sentry_is_patchedF__call__T)getattrr   _wrap_task_calltyper)   runr(   _wrap_tracer)nametaskargskwargsZold_build_tracerr$   r%   sentry_build_tracer>   s    
z9CeleryIntegration.setup_once.<locals>.sentry_build_tracer)Taskzcelery.worker.jobzcelery.app.tracezcelery.redirected)CELERY_VERSIONr
   celery.app.traceZapptraceZbuild_tracerZcelery.app.taskr5   _wrap_apply_asyncapply_async_patch_worker_exitr   )r8   r4   r5   r$   r3   r%   
setup_once4   s    zCeleryIntegration.setup_onceN)T)__name__
__module____qualname__
identifierr&   staticmethodr<   r$   r$   r$   r%   r   -   s   
r   c                    s   t   fdd}|S )Nc               	      s   t j}|t}|d ur|jr|jd| d jd}t T t|	|}|r|
dpZi }|| |di | ||d< W d    n1 s0    Y   | i |W  d    S 1 s0    Y  n | i |S d S )Nzcelery.submitr   )opdescriptionheaders)r   currentget_integrationr   r"   Z
start_spanr/   r   dictZiter_trace_propagation_headersgetupdate
setdefault)r1   r2   hubZintegrationspanrD   Zkwarg_headersfr$   r%   r:   d   s    

&.z&_wrap_apply_async.<locals>.apply_asyncr   )rN   r:   r$   rM   r%   r9   b   s    r9   c                    s   t   fdd}|S )Nc               	      sb  t j}|td u r" | i |S |  }d|_|  |tg| R i | d }t	 B t
j| d dpxi ddtd}j|_|d W d    n1 s0    Y  |d u r؈ | i |W  d    S |j|djt| d	 | d
 did,  | i |W  d    W  d    S 1 s40    Y  W d    n1 sT0    Y  d S )Nr    r'   rD   zcelery.taskzunknown celery task)rB   r/   sourceokZ
celery_job      )r0   r1   r2   )Zcustom_sampling_context)r   rE   rF   r   Z
push_scope_nameZclear_breadcrumbsZadd_event_processor_make_event_processorr   r   Zcontinue_from_headersrH   r   r/   
set_statusZstart_transactionlist)r1   r2   rK   scopeZtransactionrN   r0   r$   r%   _inner   s:    (
z_wrap_tracer.<locals>._innerr   r0   rN   rY   r$   rX   r%   r.      s    	*r.   c                    s   t   fdd}|S )Nc                     sh   z | i |W S  t yb   t }t  t| W d    n1 sL0    Y  t|  Y n0 d S r!   )	Exceptionsysexc_infor   _capture_exceptionr   )r1   r2   r]   rX   r$   r%   rY      s    (z_wrap_task_call.<locals>._innerr   rZ   r$   rX   r%   r+      s    	
r+   c                    s    fdd}|S )Nc                    s   t  B | di }|d< | di }j d|d< W d    n1 sN0    Y  d|v rt  8 t|d d trdd	td
g| d< W d    n1 s0    Y  | S )NtagsZcelery_task_idextra)Z	task_namer1   r2   z
celery-jobr]   r   r    r   r/   fingerprint)r   rJ   r/   
issubclassr   r*   )eventhintr_   r`   r1   r2   r0   uuidr$   r%   event_processor   s     (
&z._make_event_processor.<locals>.event_processorr$   )r0   rf   r1   r2   requestrg   r$   re   r%   rT      s    rT   c                 C   s   t j}|td u rd S t|d tr4t|d d S t|d t| dr\t|d | jr\d S |j	}t
||jdddd\}}|j||d	 d S )
NrQ   ZabortedZinternal_errorthrowsr    F)r,   Zhandled)Zclient_optionsZ	mechanism)rd   )r   rE   rF   r   
isinstanceCELERY_CONTROL_FLOW_EXCEPTIONS_set_statushasattrri   clientr   optionsZcapture_event)r0   r]   rK   rn   rc   rd   r$   r$   r%   r^      s     


r^   c              	   C   sh   t  N |  &}|jd ur(|j| W d    n1 s<0    Y  W d    n1 sZ0    Y  d S r!   )r   Zconfigure_scoperL   rU   )rK   statusrW   r$   r$   r%   rl   
  s    

rl   c                     s(   ddl m}  | j  fdd}|| _d S )Nr   )Workerc                     s   zr | i |W t  , tj}|td ur4|  W d    S 1 sH0    Y  S W d    q1 sh0    Y  nDt  , tj}|td ur|  W d    n1 s0    Y  0 d S r!   )r   r   rE   rF   r   flush)r1   r2   rK   Zold_workloopr$   r%   sentry_workloop  s    &    z+_patch_worker_exit.<locals>.sentry_workloop)Zbilliard.poolrq   Zworkloop)rq   rt   r$   rs   r%   r;     s    
r;   )N)4
__future__r   r\   Zsentry_sdk.hubr   Zsentry_sdk.tracingr   Zsentry_sdk.utilsr   r   r   Zsentry_sdk._compatr   Zsentry_sdk.integrationsr	   r
   Zsentry_sdk.integrations.loggingr   Zsentry_sdk._typesr   Zsentry_sdk._functoolsr   typingr   r   r   r   r   r   r   r   r   r    r   r6   Zcelery.exceptionsr   r   r   r   r7   r   ImportErrorrk   r   r9   r.   r+   rT   r^   rl   r;   r$   r$   r$   r%   <module>   s@   
5!7
