<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Y                 @   s   d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZ G dd dejZdd
dZdejfddZG dd deZdS )z
raven.contrib.celery
~~~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
    )absolute_importN)SoftTimeLimitExceeded)after_setup_loggertask_failuretask_preruntask_postrun)SentryHandlerc               @   s   e Zd Zdd ZdS )CeleryFilterc             C   s2   t |di }t|ts |jdkS |d|jdkS )NdataZ
_log_errorZinternal)getattr
isinstancedictfuncNameget)selfrecord
extra_data r   N/opt/alt/python37/lib/python3.7/site-packages/raven/contrib/celery/__init__.pyfilter   s    

zCeleryFilter.filterN)__name__
__module____qualname__r   r   r   r   r   r	      s   r	   Fc             C   s   t | |d  d S )N)ignore_expected)SentryCeleryHandlerinstall)clientr   r   r   r   register_signal   s    r   c                sB   t   t| |    fdd}tj|dd d S )Nc                s8   x(|j D ]}t|tkr|  dS qW | d S )NF)handlerstyper   	addFilter
addHandler)senderloggerloglevelZlogfileformatZcolorizekwh)filter_handlerr   r   process_logger_event(   s
    
z4register_logger_signal.<locals>.process_logger_eventF)weak)r	   r   setLevelr    r   connect)r   r#   r$   r*   r   )r(   r)   r   register_logger_signal!   s    

r.   c               @   s>   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd ZdS )r   Fc             C   s   || _ || _d S )N)r   r   )r   r   r   r   r   r   __init__8   s    zSentryCeleryHandler.__init__c             C   s4   t j| jdd tj| jdd tj| jdd d S )NF)r+   )r   r-   handle_task_prerunr   handle_task_postrunr   process_failure_signal)r   r   r   r   r   <   s    zSentryCeleryHandler.installc             C   s(   t | j t| j t| j d S )N)r   Z
disconnectr0   r   r1   r   r2   )r   r   r   r   	uninstallA   s    zSentryCeleryHandler.uninstallc             K   sd   | j r"t|dr"t|j|jr"d S t|jtrBddt|d|g}nd }| jj||||d|d d S )NthrowsZceleryr   name)task_idtaskargskwargs)extrafingerprint)	r   hasattrr   	exceptionr4   r   r   r   ZcaptureException)r   r"   r6   r8   r9   Zeinfor&   r;   r   r   r   r2   F   s    z*SentryCeleryHandler.process_failure_signalc             K   s    | j j  | j j|j d S )N)r   contextactivatetransactionpushr5   )r   r"   r6   r7   r&   r   r   r   r0   Z   s    z&SentryCeleryHandler.handle_task_prerunc             K   s    | j j|j | j j  d S )N)r   r@   popr5   r>   clear)r   r"   r6   r7   r&   r   r   r   r1   ^   s    z'SentryCeleryHandler.handle_task_postrunN)F)	r   r   r   r/   r   r3   r2   r0   r1   r   r   r   r   r   7   s   
r   )F)__doc__
__future__r   loggingZcelery.exceptionsr   Zcelery.signalsr   r   r   r   Zraven.handlers.loggingr   Filterr	   r   ERRORr.   objectr   r   r   r   r   <module>   s   

