<!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>
U
    \                     @   s^   d dl Z d dlmZmZ d dlmZmZ d dlmZmZ d dl	m
Z
 e ZG dd deZdS )    N)ThreadLock)sleeptime)queuecheck_thread_support)loggerc                   @   sb   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dddZ
dd Zdd Zdd ZdS )BackgroundWorkerc                 C   s*   t   td| _t | _d | _d | _d S )N)r   r   Queue_queuer   _lock_thread_thread_for_pidself r   B/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/worker.py__init__   s
    zBackgroundWorker.__init__c                 C   s&   | j t krdS | jsdS | j S )NF)r   osgetpidr   is_aliver   r   r   r   r      s
    zBackgroundWorker.is_alivec                 C   s   | j s|   d S N)r   startr   r   r   r   _ensure_thread$   s    zBackgroundWorker._ensure_threadc                 C   sd   t  | }| j}|j  z8|jrL|t   }|dkr<W dS |jj|d qW dS |j  X d S )Nr   F)timeoutT)r   r   Zall_tasks_doneacquirereleaseZunfinished_taskswait)r   r   Zdeadliner   delayr   r   r   _timed_queue_join)   s    


z"BackgroundWorker._timed_queue_joinc              	   C   sL   | j < | js>t| jdd| _| jd | j  t | _	W 5 Q R X d S )Nzraven-sentry.BackgroundWorker)targetnameT)
r   r   r   _targetr   	setDaemonr   r   r   r   r   r   r   r   r   8   s     
zBackgroundWorker.startc              	   C   s>   t d | j$ | jr0| jt d | _d | _W 5 Q R X d S )Nz"background worker got kill request)r   debugr   r   r   
put_nowait_TERMINATORr   r   r   r   r   killC   s    
zBackgroundWorker.killNc              	   C   sD   t d | j  | jr,|dkr,| || W 5 Q R X t d d S )Nz#background worker got flush requestg        zbackground worker flushed)r   r%   r   r   _wait_flush)r   r   callbackr   r   r   flushL   s
    
zBackgroundWorker.flushc                 C   sN   t d|}| |sJ| j }td| |d k	r<||| | ||  d S )Ng?z%d event(s) pending on flush)minr    r   Zqsizer   r%   )r   r   r*   Zinitial_timeoutpendingr   r   r   r)   T   s    



zBackgroundWorker._wait_flushc                 C   s   |    | j| d S r   )r   r   r&   r   r*   r   r   r   submit^   s    zBackgroundWorker.submitc                 C   sf   | j  }z@|tkrW 4qbz
|  W n" tk
rF   tjddd Y nX W 5 | j   X td q d S )NzFailed processing jobT)exc_infor   )r   getZ	task_doner'   	Exceptionr   errorr   r.   r   r   r   r#   c   s    

zBackgroundWorker._target)N)__name__
__module____qualname__r   propertyr   r   r    r   r(   r+   r)   r/   r#   r   r   r   r   r	      s   
	

r	   )r   	threadingr   r   r   r   Zsentry_sdk._compatr   r   Zsentry_sdk.utilsr   r   ZAnyOptionalCallableobjectr'   r	   r   r   r   r   <module>   s   	