
    tni                         d dl Z d dlZd dlmZ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rd dlmZ d dlmZ d d	lmZ  e            Z G d
 d          ZdS )    N)sleeptime)Queue	FullError)logger)DEFAULT_QUEUE_SIZE)TYPE_CHECKING)Any)Optional)Callablec                       e Zd ZefdeddfdZedefd            ZddZ	de
defdZdd	Zdd
Zdde
ddddfdZdefdZde
ddddfdZdddefdZddZdS )BackgroundWorker
queue_sizereturnNc                 z    t          |          | _        t          j                    | _        d | _        d | _        d S N)r   _queue	threadingLock_lock_thread_thread_for_pid)selfr   s     N/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/worker.py__init__zBackgroundWorker.__init__   s5    $Z00^%%
5904    c                     | j         t          j                    k    rdS | j        sdS | j                                        S )NF)r   osgetpidr   is_aliver   s    r   r    zBackgroundWorker.is_alive   s>    29;;..5| 	5|$$&&&r   c                 @    | j         s|                                  d S d S r   )r    startr!   s    r   _ensure_threadzBackgroundWorker._ensure_thread#   s'    } 	JJLLLLL	 	r   timeoutc                    t                      |z   }| j        }|j                                         	 |j        rU|t                      z
  }|dk    r	 |j                                         dS |j                            |           |j        U	 |j                                         dS # |j                                         w xY w)Nr   F)r%   T)r   r   all_tasks_doneacquireunfinished_tasksreleasewait)r   r%   deadlinequeuedelays        r   _timed_queue_joinz"BackgroundWorker._timed_queue_join'   s    66G#$$&&&		+( 9 466)A:: 
  ((*****	 $))%)888	 ( 9  ((*****E ((****s   B+ -"B+ +Cc                 @   | j         5  | j        svt          j        | j        d          | _        d| j        _        	 | j                                         t          j	                    | _
        n# t          $ r
 d | _        Y nw xY wd d d            d S # 1 swxY w Y   d S )Nzsentry-sdk.BackgroundWorker)targetnameT)r   r    r   Thread_targetr   daemonr#   r   r   r   RuntimeErrorr!   s    r   r#   zBackgroundWorker.start8   s    Z 	( 	(= ((/<.K      '+#(L&&(((+-9;;D((# ( ( ( $(DLLL	(	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s4   4B1A/.B/B BBBBBc                 "   t          j        d           | j        5  | j        rS	 | j                            t                     n$# t          $ r t          j        d           Y nw xY wd| _        d| _        ddd           dS # 1 swxY w Y   dS )z
        Kill worker thread. Returns immediately. Not useful for
        waiting on shutdown for events, use `flush` for that.
        z"background worker got kill requestz)background worker queue full, kill failedN)	r   debugr   r   r   
put_nowait_TERMINATORr   r   r!   s    r   killzBackgroundWorker.killH   s    
 	9:::Z 	, 	,| ,NK**;7777  N N NL!LMMMMMN  $'+$	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s4   BABA&#B%A&&BBBcallbackzOptional[Any]c                     t          j        d           | j        5  | j        r|dk    r|                     ||           d d d            n# 1 swxY w Y   t          j        d           d S )Nz#background worker got flush requestg        zbackground worker flushed)r   r8   r   r    _wait_flush)r   r%   r<   s      r   flushzBackgroundWorker.flushX   s    :;;;Z 	4 	4} 43  (333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	011111s   $AAAc                 4    | j                                         S r   )r   fullr!   s    r   rA   zBackgroundWorker.full_   s    {!!!r   c                 h   t          d|          }|                     |          s| j                                        dz   }t	          j        d|           | |||           |                     ||z
            s5| j                                        dz   }t	          j        d|           d S d S d S )Ng?   z%d event(s) pending on flushz"flush timed out, dropped %s events)minr/   r   qsizer   r8   error)r   r%   r<   initial_timeoutpendings        r   r>   zBackgroundWorker._wait_flushb   s    c7++%%o66 	Lk''))A-GL7AAA#'***))'O*CDD L+++--1A7KKKKK	L 	LL Lr   zCallable[[], None]c                     |                                   	 | j                            |           dS # t          $ r Y dS w xY w)NTF)r$   r   r9   r   r   r<   s     r   submitzBackgroundWorker.submitn   sV    	K""8,,,4 	 	 	55	s   2 
A A c                 v   	 | j                                         }	 |t          u r	 | j                                          d S 	  |             n&# t          $ r t          j        dd           Y nw xY w| j                                          n# | j                                          w xY wt          d           )NTzFailed processing job)exc_infor   )r   getr:   	task_done	Exceptionr   rF   r   rJ   s     r   r4   zBackgroundWorker._targetv   s    	{((H({** %%'''''IHJJJJ  I I IL!84HHHHHHI %%''''%%''''!HHH	s/   	B 
A B  A0-B /A00B B()r   Nr   )__name__
__module____qualname__r   intr   propertyboolr    r$   floatr/   r#   r;   r?   rA   r>   rK   r4    r   r   r   r      ss       ); 5 53 5 5 5 5 5 '$ ' ' ' X'   + +4 + + + +"( ( ( ( , , , , 2 2U 2o 2 2 2 2 2"d " " " "
L5 
LO 
L 
L 
L 
L 
L3          r   r   )r   r   r   r   sentry_sdk._queuer   r   sentry_sdk.utilsr   sentry_sdk.constsr   typingr	   r
   r   r   objectr:   r   rX   r   r   <module>r^      s   				             . . . . . . . . # # # # # # 0 0 0 0 0 0               fhhn n n n n n n n n nr   