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: //home/arjun/projects/env/lib/python3.10/site-packages/aiohttp/__pycache__/worker.cpython-310.pyc
o

+we�@s�dZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
ddlmZddlmZddlmZdd	lmZdd
lmZddlmZz	ddlZejZWn
eyddZeZYnwdZGd
d�dej �Z!Gdd�de!�Z"dS)z%Async gunicorn worker for aiohttp.web�N)�	FrameType)�Any�	Awaitable�Callable�Optional�Union)�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__��G/home/arjun/projects/env/lib/python3.10/site-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&,s
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�run5s�
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�wsgir
r �iscoroutinefunctionr
�	AppRunner�app�RuntimeError�format�cfg�	accesslogr,r6�	keepalive�_get_valid_log_formatr7�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>r;r6�ctxrI�sock�site�pid�cntrrrr)Asr����

���
�zGunicornWebWorker._run�asyncio.Future[bool]cCs>|��|j}|dus
J�|��|_}|j�d|j|�|S)Ng�?)�_notify_waiter_doner$�
create_futurer�
call_later)rr$�waiterrrrrV�sz#GunicornWebWorker._wait_next_notifyrccCs8|dur|j}|durt|d�||jurd|_dSdS)NT)rr)rrcrrrr`�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�|�|��dSrd)rOrA�
worker_intr`�rrtrurrrrh�szGunicornWebWorker.handle_quitcCs&d|_d|_|j�|�t�d�dS)NFr)rOrrA�worker_abortr/r0rwrrrrq�szGunicornWebWorker.handle_abortrA�
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?ry�ssl_version�load_cert_chain�certfile�keyfile�	cert_reqs�verify_mode�ca_certs�load_verify_locations�ciphers�set_ciphers)rArZrrrrH�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�rrrrD�s
�z'GunicornWebWorker._get_valid_log_format�rN)rr_r)�__name__�
__module__�__qualname__r�
LOG_FORMATr��GunicornAccessLogFormat�defaultr�rrr&r1r)rVrr`rs�intrrhrq�staticmethodrH�strrD�
__classcell__rrrrr s(
	

B��
�
"	rcseZdZd�fdd�Z�ZS)rrNcs0ddl}t����t�|���t���dSr)�uvloopr r!r"�set_event_loop_policy�EventLoopPolicyrr&)rr�rrrr&�sz$GunicornUVLoopWebWorker.init_processr�)r�r�r�r&r�rrrrr�sr)#�__doc__r rMr�rfr/�typesr�typingrrrrr�gunicorn.configrr��gunicorn.workersr	�aiohttpr
�helpersr�web_appr
�web_logrrzry�ImportError�object�__all__�Workerrrrrrr�<module>s2
�K