Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/aiohttp/__pycache__/worker.cpython-38.pyc

U

'7`V@sdZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
ddlmZddlmZddlmZdd	lmZdd
lmZddlmZzddlZejZWnek
rdZeZYnXdZGd
ddej Z!Gddde!Z"Gddde!Z#dS)z%Async gunicorn worker for aiohttp.webN)	FrameType)Any	AwaitableCallableOptionalUnion)AccessLogFormat)base)web)
set_result)Application)AccessLogger)GunicornWebWorkerGunicornUVLoopWebWorkerGunicornTokioWebWorkercseZdZejZejZe	e	ddfddZ
ddfddZdddd	Zddd
dZ
ddd
dZd edddddZddddZeeddddZeeddddZee	ddddZeedddZZS)!rN)argskwreturncs$tj||d|_d|_d|_dSNr)super__init___task	exit_code_notify_waiter)selfrr	__class__A/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/worker.pyr%szGunicornWebWorker.__init__rcs0tt|_t|jtdS)N)asyncioget_event_loopcloseZnew_event_looploopZset_event_looprinit_processrrrrr%,s
zGunicornWebWorker.init_processcCs||j||_z|j|jWn tk
rD|jdYnXtj	dkrb|j|j
|jt|j
dS)NzException in gunicorn worker))r$Zcreate_task_runrZrun_until_complete	ExceptionlogZ	exceptionsysversion_infoZshutdown_asyncgensr#exitrr&rrrrun5s

zGunicornWebWorker.runc
st|jtr|j}n,t|jr0|IdH}ntd|j|jjrP|j	j
nd}tj||j	|jj
|||jjd}|IdH|jjr||jnd}|}|dk	st|j}|dk	st|jD]0}tj||||jjddd}|IdHqt}z|jr||j}	|jjrF|	|jjkrFd|_|j	d|nB|tkrz|j t!krzd|_|j	d|n|"IdHqWnt#k
rYnX|$IdHdS)	NzUwsgi app should be either Application or async function returning Application, got {})ZloggerZkeepalive_timeout
access_logaccess_log_formatd_)Zssl_contextZshutdown_timeoutFzMax requests, shutting down: %sz!Parent changed, shutting down: %s)%
isinstanceZwsgir
r!ZiscoroutinefunctionRuntimeErrorformatcfgZ	accesslogr+r0r
Z	AppRunnerZ	keepalive_get_valid_log_formatr1ZsetupZis_ssl_create_ssl_contextAssertionErrorserverZsocketsZSockSiteZgraceful_timeoutstartosgetpidaliveZnotifyZrequests_countZmax_requestsinfoZppidgetppid_wait_next_notify
BaseExceptionZcleanup)
rZappr0Zrunnerctxr;ZsockZsitepidZcntrrrr)Bs\
zGunicornWebWorker._runzasyncio.Future[bool]cCs>||j}|dk	st||_}|jd|j||S)Ng?)_notify_waiter_doner$r:Z
create_futurerZ
call_later)rr$waiterrrrrBzsz#GunicornWebWorker._wait_next_notify)rGrcCs4|dkr|j}|dk	r t|d||jkr0d|_dS)NT)rr)rrGrrrrFs

z%GunicornWebWorker._notify_waiter_donecCs|jtj|jtjd|jtj|jtjd|jtj|jtjd|jtj|j	tjd|jtj
|jtj
d|jtj|j
tjdttjdttj
ddSNF)r$Zadd_signal_handlersignalSIGQUIThandle_quitSIGTERMZhandle_exitSIGINTSIGWINCHZhandle_winchSIGUSR1Zhandle_usr1SIGABRThandle_abortsiginterruptr&rrrinit_signalssLzGunicornWebWorker.init_signals)sigframercCsd|_|j||dSrH)r?r7Z
worker_intrFrrTrUrrrrKszGunicornWebWorker.handle_quitcCs&d|_d|_|j|tddS)NFr)r?rr7Zworker_abortr,r.rVrrrrQszGunicornWebWorker.handle_abort
SSLContext)r7rcCs\tdkrtdt|j}||j|j|j|_|j	rF|
|j	|jrX||j|S)z~Creates SSLContext instance for usage in asyncio.create_server.

        See ssl.SSLSocket.__init__ for more details.
        NzSSL is not supported.)
sslr5rWZssl_versionZload_cert_chainZcertfileZkeyfileZ	cert_reqsZverify_modeZca_certsZload_verify_locationsZciphersZset_ciphers)r7rDrrrr9sz%GunicornWebWorker._create_ssl_context)
source_formatrcCs.||jkr|jStd|r&tdn|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)rrYrrrr8s
z'GunicornWebWorker._get_valid_log_format)N)__name__
__module____qualname__rZ
LOG_FORMATr[GunicornAccessLogFormatdefaultrZrrr%r/r)rBrrFrSintrrKrQstaticmethodr9strr8
__classcell__rrrrr s$	
8 	rcs"eZdZddfddZZS)rNr cs0ddl}tt|tdSr)uvloopr!r"r#set_event_loop_policyEventLoopPolicyrr%)rrhrrrr%sz$GunicornUVLoopWebWorker.init_processr_r`rar%rgrrrrrsrcs"eZdZddfddZZS)rNr cs0ddl}tt|tdSr)tokior!r"r#rirjrr%)rrlrrrr%sz#GunicornTokioWebWorker.init_processrkrrrrrsr)$__doc__r!r=r\rIr,typesrtypingrrrrrZgunicorn.configrrbZgunicorn.workersr	Zaiohttpr
ZhelpersrZweb_appr
Zweb_logrrXrWImportErrorobject__all__ZWorkerrrrrrrr<module>s0

@
Back to Directory File Manager