
    fip                         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                   f    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dS )BackgroundWorkerc                 z    t          |          | _        t          j                    | _        d | _        d | _        d S N)r   _queue	threadingLock_lock_thread_thread_for_pid)self
queue_sizes     a/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/worker.py__init__zBackgroundWorker.__init__   s5    J''^%%
#    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   c                    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)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    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.start<   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.killM   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Nc                     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   r7   r   r   _wait_flush)r   r%   callbacks      r   flushzBackgroundWorker.flush^   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   r@   zBackgroundWorker.fullf   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   r7   error)r   r%   r=   initial_timeoutpendings        r   r<   zBackgroundWorker._wait_flushj   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   c                     |                                   	 | j                            |           dS # t          $ r Y dS w xY w)NTF)r#   r   r8   r   r   r=   s     r   submitzBackgroundWorker.submitw   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   getr9   	task_done	Exceptionr   rE   r   rI   s     r   r3   zBackgroundWorker._target   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   )__name__
__module____qualname__r   r   propertyr   r#   r.   r"   r:   r>   r@   r<   rJ   r3    r   r   r   r      s        "4 $ $ $ $ ' ' X'  
+ + +$( ( (", , ,"2 2 2 2" " "L L 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 0 0 0 0 0               fhhy y y y y y y y y yr   