
    lhp                         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y)    N)sleeptime)Queue	FullError)logger)DEFAULT_QUEUE_SIZE)TYPE_CHECKING)Any)Optional)Callablec                   ^    e Zd ZefdZed        Zd Zd Zd Z	d Z
ddZd	 Zd
 Zd Zd Zy)BackgroundWorkerc                 r    t        |      | _        t        j                         | _        d | _        d | _        y N)r   _queue	threadingLock_lock_thread_thread_for_pid)self
queue_sizes     c/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/worker.py__init__zBackgroundWorker.__init__   s+    J'^^%
#    c                     | j                   t        j                         k7  ry| j                  sy| j                  j	                         S )NF)r   osgetpidr   is_aliver   s    r   r   zBackgroundWorker.is_alive   s8     299;.||||$$&&r   c                 >    | j                   s| j                          y y r   )r   startr    s    r   _ensure_threadzBackgroundWorker._ensure_thread%   s    }}JJL r   c                    t               |z   }| j                  }|j                  j                          	 |j                  rW|t               z
  }|dk  r	 |j                  j                          y|j                  j                  |       |j                  rW	 |j                  j                          y# |j                  j                          w xY w)Nr   F)timeoutT)r   r   all_tasks_doneacquireunfinished_tasksreleasewait)r   r%   deadlinequeuedelays        r   _timed_queue_joinz"BackgroundWorker._timed_queue_join*   s    6G#$$&		+(( 46)A: 
   ((*	 $$))%)8	 ((   ((*E  ((*s   B4 /(B4 4Cc                 `   | j                   5  | j                  skt        j                  | j                  d      | _        d| j
                  _        	 | j
                  j                          t        j                         | _
        d d d        y # t        $ r
 d | _        Y w xY w# 1 sw Y   y xY w)Nzsentry-sdk.BackgroundWorker)targetnameT)r   r   r   Thread_targetr   daemonr"   r   r   r   RuntimeErrorr    s    r   r"   zBackgroundWorker.start<   s    ZZ 	(==(//<<.K  '+#(LL&&(+-99;D(	( 	( $ ( $(DL	(	( 	(s*   AB$3BB!B$ B!!B$$B-c                 ,   t        j                  d       | j                  5  | j                  r.	 | j                  j                  t               d| _        d| _        ddd       y# t        $ r t        j                  d       Y 7w xY w# 1 sw Y   yxY w)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.killM   s     	9:ZZ 	,||NKK**;7  $'+$	, 	, ! NLL!LMN		, 	,s.   B
A&B
&BB
BB

BNc                     t        j                  d       | j                  5  | j                  r|dkD  r| j	                  ||       d d d        t        j                  d       y # 1 sw Y   xY w)Nz#background worker got flush requestg        zbackground worker flushed)r   r7   r   r   _wait_flush)r   r%   callbacks      r   flushzBackgroundWorker.flush^   sW    :;ZZ 	4}}3  (3	4 	01	4 	4s   $A$$A-c                 6    | j                   j                         S r   )r   fullr    s    r   r@   zBackgroundWorker.fullf   s    {{!!r   c                 L   t        d|      }| j                  |      s| j                  j                         dz   }t	        j
                  d|       |	 |||       | j                  ||z
        s4| j                  j                         dz   }t	        j                  d|       y y y )Ng?   z%d event(s) pending on flushz"flush timed out, dropped %s events)minr.   r   qsizer   r7   error)r   r%   r=   initial_timeoutpendings        r   r<   zBackgroundWorker._wait_flushj   s    c7+%%o6kk'')A-GLL7A#'*))'O*CD++++-1A7K E 7r   c                 z    | j                          	 | j                  j                  |       y# t        $ r Y yw xY w)NTF)r#   r   r8   r   r   r=   s     r   submitzBackgroundWorker.submitw   s:    	KK""8, 		s   . 	::c                 h   	 | j                   j                         }	 |t        u r	 | j                   j                          y 	  |        | j                   j                          t        d       m# t        $ r t        j                  dd       Y Hw xY w# | j                   j                          w xY w)NTzFailed processing job)exc_infor   )r   getr9   	task_done	Exceptionr   rE   r   rI   s     r   r3   zBackgroundWorker._target   s    {{(H({* %%'IJ %%'!H  ! ILL!84HI %%'s)   B A/ / BB BB B1r   )__name__
__module____qualname__r   r   propertyr   r#   r.   r"   r:   r>   r@   r<   rJ   r3    r   r   r   r      sL    "4 $ ' '
+$(","2"Lr   r   )r   r   r   r   sentry_sdk._queuer   r   sentry_sdk.utilsr   sentry_sdk.constsr   typingr	   r
   r   r   objectr9   r   rT   r   r   <module>rZ      s;    	   . # 0   hy yr   