HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/aiohttp/__pycache__/worker.cpython-310.pyc
o

���gh�@sdZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZddlm
ZddlmZddlmZdd	lmZdd
lmZddlmZe	rTddlZejZnz	ddlZejZWn
eyjdZeZYnwdZGd
d�dej�ZGdd�de�Z dS)z%Async gunicorn worker for aiohttp.web�N)�	FrameType)�
TYPE_CHECKING�Any�Optional)�AccessLogFormat)�base)�web�)�
set_result)�Application)�AccessLogger)�GunicornWebWorker�GunicornUVLoopWebWorkercs�eZdZejZejZde	de	ddf�fdd�Z
d"�fdd�Zd"d	d
�Zd"dd�Z
d#dd�Z	d$ded
ddfdd�Zd"dd�Zdedeeddfdd�Zdedeeddfdd�Zede	ddfdd��Zdedefd d!�Z�ZS)%r
�args�kw�returnNcs(t�j|i|��d|_d|_d|_dS�Nr)�super�__init__�_task�	exit_code�_notify_waiter)�selfrr��	__class__��9/usr/local/lib/python3.10/dist-packages/aiohttp/worker.pyr*s
zGunicornWebWorker.__init__cs0t����t��|_t�|j�t���dS�N)�asyncio�get_event_loop�close�new_event_loop�loop�set_event_loopr�init_process�rrrrr$1s
zGunicornWebWorker.init_processcCsp|j�|���|_z	|j�|j�Wnty!|j�d�Ynw|j�|j���|j�	�t
�|j�dS)NzException in gunicorn worker)
r"�create_task�_runr�run_until_complete�	Exception�log�	exception�shutdown_asyncgensr �sys�exitrr%rrr�run:s�
zGunicornWebWorker.runc�s��d}t|jt�r
|j}n$t�|j�r)|��IdH}t|tj�r&|}|j}n|}ntd�	|j���|durX|j
jr=|jj
nd}tj||j|j
j||�|j
j�|j
jddd�}|��IdH|j
jri|�|j
�nd}|}|dussJ�|j}|dus|J�|jD]}tj|||d�}|��IdHqt��}	zA|jr�|��|j}
|jr�|
|jkr�d|_|j�d|�n|	t��kr�|j t�!�kr�d|_|j�d|�n|�"�IdH|js�Wn	t#y�Ynw|�$�IdHdS)	NzUwsgi app should be either Application or async function returning Application, got {}�d�_)�logger�keepalive_timeout�
access_log�access_log_format�shutdown_timeout)�ssl_contextFzMax requests, shutting down: %sz!Parent changed, shutting down: %s)%�
isinstance�wsgirr�iscoroutinefunctionr�	AppRunner�app�RuntimeError�format�cfg�	accesslogr*r4�	keepalive�_get_valid_log_formatr5�graceful_timeout�setup�is_ssl�_create_ssl_context�server�sockets�SockSite�start�os�getpid�alive�notify�requests_count�max_requests�info�ppid�getppid�_wait_next_notify�
BaseException�cleanup)r�runnerr<r9r4�ctxrG�sock�site�pid�cntrrrr'Fsr����

���
�zGunicornWebWorker._run�asyncio.Future[bool]cCs>|��|j}|dus
J�|��|_}|j�d|j|�|S)Ng�?)�_notify_waiter_doner"�
create_futurer�
call_later)rr"�waiterrrrrT�sz#GunicornWebWorker._wait_next_notifyracCs8|dur|j}|durt|d�||jurd|_dSdS)NT)rr
)rrarrrr^�s


�z%GunicornWebWorker._notify_waiter_donecCs�|j�tj|jtjd�|j�tj|jtjd�|j�tj|jtjd�|j�tj|j	tjd�|j�tj
|jtj
d�|j�tj|j
tjd�t�tjd�t�tj
d�dS�NF)r"�add_signal_handler�signal�SIGQUIT�handle_quit�SIGTERM�handle_exit�SIGINT�SIGWINCH�handle_winch�SIGUSR1�handle_usr1�SIGABRT�handle_abort�siginterruptr%rrr�init_signals�s(������zGunicornWebWorker.init_signals�sig�framecCsd|_|j�|�|��dSrb)rMr?�
worker_intr^�rrrrsrrrrf�szGunicornWebWorker.handle_quitcCs&d|_d|_|j�|�t�d�dS)NFr	)rMrr?�worker_abortr-r.rurrrro�szGunicornWebWorker.handle_abortr?�
SSLContextcCs\tdurtd��t�|j�}|�|j|j�|j|_|j	r#|�
|j	�|jr,|�|j�|S)z~Creates SSLContext instance for usage in asyncio.create_server.

        See ssl.SSLSocket.__init__ for more details.
        NzSSL is not supported.)
�sslr=rw�ssl_version�load_cert_chain�certfile�keyfile�	cert_reqs�verify_mode�ca_certs�load_verify_locations�ciphers�set_ciphers)r?rXrrrrF�sz%GunicornWebWorker._create_ssl_context�
source_formatcCs(||jkr|jSt�d|�rtd��|S)Nz%\([^\)]+\)z�Gunicorn's style options in form of `%(name)s` are not supported for the log formatting. Please use aiohttp's format specification to configure access log formatting: http://docs.aiohttp.org/en/stable/logging.html#format-specification)�DEFAULT_GUNICORN_LOG_FORMAT�DEFAULT_AIOHTTP_LOG_FORMAT�re�search�
ValueError)rr�rrrrB�s
�z'GunicornWebWorker._get_valid_log_format�rN)rr]r)�__name__�
__module__�__qualname__r�
LOG_FORMATr��GunicornAccessLogFormat�defaultr�rrr$r/r'rTrr^rq�intrrfro�staticmethodrF�strrB�
__classcell__rrrrr
%s(
	

B��
�
"	r
cseZdZd�fdd�Z�ZS)rrNcs0ddl}t����t�|���t���dSr)�uvlooprrr �set_event_loop_policy�EventLoopPolicyrr$)rr�rrrr$�sz$GunicornUVLoopWebWorker.init_processr�)r�r�r�r$r�rrrrr�sr)!�__doc__rrKr�rdr-�typesr�typingrrr�gunicorn.configrr��gunicorn.workersr�aiohttpr�helpersr
�web_appr�web_logrrxrw�ImportError�object�__all__�Workerr
rrrrr�<module>s8
�K