Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib/python3.5/site-packages/raven/transport/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib/python3.5/site-packages/raven/transport/__pycache__/threaded.cpython-35.pyc



��Yu�@s�dZddlmZddlZddlZddlZddlZddlmZmZddl	m
Z
ddlmZddl
mZmZdZejd	�ZGd
d�de�ZGdd
�d
e
e�ZdS)z�
raven.transport.threaded
~~~~~~~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
�)�absolute_importN)�sleep�time)�AsyncTransport)�
HTTPTransport)�Queue�
check_threads�
z
sentry.errorsc@s�eZdZe�Zedd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
dd�Zdd�Z
dd�Zd
S)�AsyncWorkercCsTt�td�|_tj�|_d|_d|_d|i|_|j	�dS)N��shutdown_timeout���)
rr�_queue�	threading�Lock�_lock�_thread�_thread_for_pid�options�start)�selfr�r�I/opt/alt/python35/lib/python3.5/site-packages/raven/transport/threaded.py�__init__s		zAsyncWorker.__init__cCs/|jtj�krdS|jo.|jj�S)NF)r�os�getpidr�is_alive)rrrrr(szAsyncWorker.is_alivecCs|j�rdS|j�dS)N)rr)rrrr�_ensure_thread-szAsyncWorker._ensure_threadc
Cs�|jj�z�|j�s dS|jj|j�|jd}td|�}|j|�s�|jj	�}t
d|�t
d|�tjdkr�t
d�n
t
d�|j||�d|_
Wd|jj�XdS)Nrg�������?z6Sentry is attempting to send %i pending error messageszWaiting up to %s seconds�ntzPress Ctrl-Break to quitzPress Ctrl-C to quit)r�acquirerr�
put_nowait�_terminatorr�min�_timed_queue_joinZqsize�printr�namer�release)r�timeoutZinitial_timeout�sizerrr�main_thread_terminated2s$




z"AsyncWorker.main_thread_terminatedc
Cs�t�|}|j}|jj�zHx=|jre|t�}|dkrOdS|jjd|�q)WdSWd|jj�XdS)z�
        implementation of Queue.join which takes a 'timeout' argument

        returns true on success, false on timeout
        rFr'TN)rrZall_tasks_donerZunfinished_tasks�waitr&)rr'Zdeadline�queue�delayrrrr#Ws
	

zAsyncWorker._timed_queue_joincCs�|jj�zZ|j�sftjd|jdd�|_|jjd�|jj�t	j
�|_Wd|jj�t
j|j�XdS)z)
        Starts the task thread.
        �targetr%zraven.AsyncWorkerTN)rrrr�Thread�_targetr�	setDaemonrrrrr&�atexit�registerr))rrrrros


zAsyncWorker.startNc
Csg|jj�zE|jrQ|jj|j�|jjd|�d|_d|_Wd|jj�XdS)z5
        Stops the task thread. Synchronous!
        r'N)	rrrrr r!�joinrr&)rr'rrr�stop~s
		
zAsyncWorker.stopcOs'|j�|jj|||f�dS)N)rrr )r�callback�args�kwargsrrrr+�s
zAsyncWorker.queuecCs�x�|jj�}z\||jkr%P|\}}}y|||�Wn%tk
rltjddd�YnXWd|jj�Xtd�qWdS)NzFailed processing job�exc_infoTr)r�getr!�	Exception�logger�errorZ	task_doner)r�recordr5r6r7rrrr/�s
zAsyncWorker._target)�__name__�
__module__�__qualname__�objectr!�DEFAULT_TIMEOUTrrrr)r#rr4r+r/rrrrr
s	%r
csLeZdZddddgZdd�Z�fdd�Zd	d
�Z�S)�ThreadedHTTPTransport�http�httpsz
threaded+httpzthreaded+httpscCs3t|d�s |jj�r,t�|_|jS)N�_worker)�hasattrrFrr
)rrrr�
get_worker�s z ThreadedHTTPTransport.get_workercs]y tt|�j|||�Wn/tk
rQ}z||�WYdd}~XnX|�dS)N)�superrC�sendr:)r�url�data�headers�
success_cb�
failure_cb�e)�	__class__rr�	send_sync�s
 zThreadedHTTPTransport.send_synccCs)|j�j|j|||||�dS)N)rHr+rR)rrKrLrMrNrOrrr�
async_send�sz ThreadedHTTPTransport.async_send)r>r?r@�schemerHrRrSrr)rQrrC�srC)�__doc__�
__future__rr1�loggingrrrrZraven.transport.baserZraven.transport.httprZraven.utils.compatrrrB�	getLoggerr;rAr
rCrrrr�<module>s�