Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/worker.cpython-35.pyc



Z@sdZddlZddlZddlZddlZddlZddlmZddlm	Z
ddlmZddl
mZddlmZmZyddlZWnek
rdZYnXdZGdd	d	ejZGd
d
d
eZGdddeZdS)z%Async gunicorn worker for aiohttp.webN)suppress)AccessLogFormat)base)web)AccessLogger
set_resultGunicornWebWorkerGunicornUVLoopWebWorkerGunicornTokioWebWorkercseZdZejZejZfddZ	fddZ
ddZddZd	d
Z
ddd
ZddZddZddZeddZddZS)r	cs;tj||d|_d|_d|_d|_dS)Nr)super__init___runner_task	exit_code_notify_waiter)selfargskw)	__class__
/worker.pyr
"s
			zGunicornWebWorker.__init__cs@tjjtj|_tj|jtjdS)N)asyncioget_event_loopcloseZnew_event_looploopZset_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
|jWdQRXt|jdr|jj
|jj|jjtj|jdS)NloggerZkeepalive_timeout
access_logaccess_log_formatshutdown_asyncgens)cfgZ	accessloglogrdictZ	keepalive_get_valid_log_formatrrZ	AppRunnerZwsgirrZrun_until_completeZsetupZcreate_task_runrr	Exceptionhasattrr rsysexitr)rrZparamsrrrrun3s 	

zGunicornWebWorker.runcsl|jjr|j|jnd}xO|jD]D}tj|j|d|d|jjdd}|jIdHq.Wt	j
}yx|jr?|j|jj
j}|jjr||jjkrd|_|jjd|q|t	j
kr-|jt	jkr-d|_|jjd|q|jIdHqWWntk
rUYnX|jjIdHdS)NZssl_contextZshutdown_timeoutd_FzMax requests, shutting down: %sz!Parent changed, shutting down: %s)r!Zis_ssl_create_ssl_contextZsocketsrZSockSiterZgraceful_timeoutstartosgetpidalivenotifyZserverZrequests_countZmax_requestsr"infoZppidgetppid_wait_next_notify
BaseExceptioncleanup)rctxsockZsitepidZcntrrrr%Gs*$
	'	
zGunicornWebWorker._runcCs=|j|jj|_}|jjd|j||S)Ng?)_notify_waiter_donerZ
create_futurerZ
call_later)rwaiterrrrr5es
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dtjtjdtjtj
ddS)NF)rZadd_signal_handlersignalSIGQUIThandle_quitSIGTERMZhandle_exitSIGINTSIGWINCHZhandle_winchSIGUSR1Zhandle_usr1SIGABRThandle_abortsiginterrupt)rrrrinit_signalsvs





zGunicornWebWorker.init_signalscCs'd|_|jj||jdS)NF)r1r!Z
worker_intr;)rsigframerrrr?s	zGunicornWebWorker.handle_quitcCs3d|_d|_|jj|tjddS)NFr)r1rr!Zworker_abortr(r))rrHrIrrrrEs		zGunicornWebWorker.handle_abortcCstdkrtdtj|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|r7tdn|SdS)Nz%\([^\)]+\)zGunicorn'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_FORMATDEFAULT_AIOHTTP_LOG_FORMATresearch
ValueError)rZ
source_formatrrrr$sz'GunicornWebWorker._get_valid_log_format)__name__
__module____qualname__rZ
LOG_FORMATrMGunicornAccessLogFormatdefaultrLr
rr*r%r5r;rGr?rEstaticmethodr-r$rr)rrr	s					cs"eZdZfddZS)r
cs@ddl}tjjtj|jtjdS)Nr)uvlooprrrset_event_loop_policyEventLoopPolicyrr)rrW)rrrrsz$GunicornUVLoopWebWorker.init_process)rQrRrSrrr)rrr
scs"eZdZfddZS)rcs@ddl}tjjtj|jtjdS)Nr)tokiorrrrXrYrr)rrZ)rrrrsz#GunicornTokioWebWorker.init_process)rQrRrSrrr)rrrs)r	r
r)__doc__rr/rNr=r(
contextlibrZgunicorn.configrrTZgunicorn.workersrZaiohttprZhelpersrrrJImportError__all__ZWorkerr	r
rrrrr<module>s(

Back to Directory File Manager