MOON
Server: Apache
System: Linux server30c.hostingraja.org 3.10.0-962.3.2.lve1.5.63.el7.x86_64 #1 SMP Fri Oct 8 12:03:35 UTC 2021 x86_64
User: jibhires (1887)
PHP: 8.1.30
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, symlink, escapeshellcmd, pcntl_exec
Upload Files
File: //opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/worker.cpython-35.pyc


���Z��@sdZddlZddlZddlZddlZddlZddlmZddlm	Z
ddlmZddl
mZddlmZmZyddlZWnek
r�dZYnXdZGdd	�d	ej�ZGd
d
�d
e�ZGdd�de�ZdS)z%Async gunicorn worker for aiohttp.web�N)�suppress)�AccessLogFormat)�base)�web�)�AccessLogger�
set_result�GunicornWebWorker�GunicornUVLoopWebWorker�GunicornTokioWebWorkercs�eZdZejZejZ�fdd�Z	�fdd�Z
dd�Zdd�Zd	d
�Z
ddd
�Zdd�Zdd�Zdd�Zedd��Zdd�Z�S)r	cs;t�j||�d|_d|_d|_d|_dS)Nr)�super�__init__�_runner�_task�	exit_code�_notify_waiter)�self�args�kw)�	__class__��
/worker.pyr
"s
			zGunicornWebWorker.__init__cs@tj�j�tj�|_tj|j�t�j�dS)N)�asyncio�get_event_loop�closeZnew_event_loop�loopZset_event_loopr�init_process)r)rrrr*szGunicornWebWorker.init_processc
Cs|jjr|jjnd}td|jd|jjd|d|j|jj��}tj	|j
|�|_|jj
|jj��|jj|j��|_tt��|jj
|j�WdQRXt|jd�r�|jj
|jj��|jj�tj|j�dS)N�loggerZkeepalive_timeout�
access_log�access_log_format�shutdown_asyncgens)�cfgZ	accesslog�logr�dictZ	keepalive�_get_valid_log_formatrrZ	AppRunnerZwsgirrZrun_until_completeZsetupZcreate_task�_runrr�	Exception�hasattrr r�sys�exitr)rrZparamsrrr�run3s 	

zGunicornWebWorker.runc�sl|jjr|j|j�nd}xO|jD]D}tj|j|d|d|jjdd�}|j�IdHq.Wt	j
�}y�x�|jr?|j�|jj
j}|jjr�||jjkr�d|_|jjd|�q�|t	j
�kr-|jt	j�kr-d|_|jjd|�q�|j�IdHq�WWntk
rUYnX|jj�IdHdS)NZssl_contextZshutdown_timeout�d�_FzMax requests, shutting down: %sz!Parent changed, shutting down: %s)r!Zis_ssl�_create_ssl_contextZsocketsrZSockSiterZgraceful_timeout�start�os�getpid�alive�notifyZserverZrequests_countZmax_requestsr"�infoZppid�getppid�_wait_next_notify�
BaseException�cleanup)r�ctx�sockZsite�pidZcntrrrr%Gs*$
	'	
zGunicornWebWorker._runcCs=|j�|jj�|_}|jjd|j|�|S)Ng�?)�_notify_waiter_donerZ
create_futurerZ
call_later)r�waiterrrrr5es
z#GunicornWebWorker._wait_next_notifyNcCsJ|dkr|j}|dk	r.t|d�||jkrFd|_dS)NT)rr)rr<rrrr;ms	
z%GunicornWebWorker._notify_waiter_donecCs�|jjtj|jtjd�|jjtj|jtjd�|jjtj|jtjd�|jjtj|j	tjd�|jjtj
|jtj
d�|jjtj|j
tjd�tjtjd�tjtj
d�dS)NF)rZadd_signal_handler�signal�SIGQUIT�handle_quit�SIGTERMZhandle_exit�SIGINT�SIGWINCHZhandle_winch�SIGUSR1Zhandle_usr1�SIGABRT�handle_abort�siginterrupt)rrrr�init_signalsvs





zGunicornWebWorker.init_signalscCs'd|_|jj|�|j�dS)NF)r1r!Z
worker_intr;)r�sig�framerrrr?�s	zGunicornWebWorker.handle_quitcCs3d|_d|_|jj|�tjd�dS)NFr)r1rr!Zworker_abortr(r))rrHrIrrrrE�s		zGunicornWebWorker.handle_abortcCs�tdkrtd��tj|j�}|j|j|j�|j|_|j	re|j
|j	�|jr~|j|j�|S)z Creates SSLContext instance for usage in asyncio.create_server.

        See ssl.SSLSocket.__init__ for more details.
        NzSSL is not supported.)
�ssl�RuntimeErrorZ
SSLContextZssl_versionZload_cert_chainZcertfileZkeyfileZ	cert_reqsZverify_modeZca_certsZload_verify_locationsZciphersZset_ciphers)r!r8rrrr-�s		z%GunicornWebWorker._create_ssl_contextcCs?||jkr|jStjd|�r7td��n|SdS)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)rZ
source_formatrrrr$�sz'GunicornWebWorker._get_valid_log_format)�__name__�
__module__�__qualname__rZ
LOG_FORMATrM�GunicornAccessLogFormat�defaultrLr
rr*r%r5r;rGr?rE�staticmethodr-r$rr)rrr	s					cs"eZdZ�fdd�Z�S)r
cs@ddl}tj�j�tj|j��t�j�dS)Nr)�uvlooprrr�set_event_loop_policy�EventLoopPolicyrr)rrW)rrrr�sz$GunicornUVLoopWebWorker.init_process)rQrRrSrrr)rrr
�scs"eZdZ�fdd�Z�S)rcs@ddl}tj�j�tj|j��t�j�dS)Nr)�tokiorrrrXrYrr)rrZ)rrrr�sz#GunicornTokioWebWorker.init_process)rQrRrSrrr)rrr�s)r	r
r)�__doc__rr/rNr=r(�
contextlibrZgunicorn.configrrTZgunicorn.workersrZaiohttprZhelpersrrrJ�ImportError�__all__ZWorkerr	r
rrrrr�<module>s(
�