Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/aiohttp/__pycache__/worker.cpython-38.opt-1.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}|}|j}|jD]0}tj||||jjddd}|IdHqt}z|jrr||j}	|jjr.|	|jjkr.d|_|j	d|q|tkrb|jt krbd|_|j	d|q|!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_contextserverZsocketsZSockSiteZgraceful_timeoutstartosgetpidaliveZnotifyZrequests_countZmax_requestsinfoZppidgetppid_wait_next_notify
BaseExceptionZcleanup)
rZappr0Zrunnerctxr:ZsockZsitepidZcntrrrr)BsX
zGunicornWebWorker._runzasyncio.Future[bool]cCs2||j}||_}|jd|j||S)Ng?)_notify_waiter_doner$Z
create_futurerZ
call_later)rr$waiterrrrrAzs
z#GunicornWebWorker._wait_next_notify)rFrcCs4|dkr|j}|dk	r t|d||jkr0d|_dS)NT)rr)rrFrrrrEs

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||dSrG)r>r7Z
worker_intrErrSrTrrrrJszGunicornWebWorker.handle_quitcCs&d|_d|_|j|tddS)NFr)r>rr7Zworker_abortr,r.rUrrrrPs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.)
sslr5rVZssl_versionZload_cert_chainZcertfileZkeyfileZ	cert_reqsZverify_modeZca_certsZload_verify_locationsZciphersZset_ciphers)r7rCrrrr9s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)rrXrrrr8s
z'GunicornWebWorker._get_valid_log_format)N)__name__
__module____qualname__rZ
LOG_FORMATrZGunicornAccessLogFormatdefaultrYrrr%r/r)rArrErRintrrJrPstaticmethodr9strr8
__classcell__rrrrr s$	
8 	rcs"eZdZddfddZZS)rNr cs0ddl}tt|tdSr)uvloopr!r"r#set_event_loop_policyEventLoopPolicyrr%)rrgrrrr%sz$GunicornUVLoopWebWorker.init_processr^r_r`r%rfrrrrrsrcs"eZdZddfddZZS)rNr cs0ddl}tt|tdSr)tokior!r"r#rhrirr%)rrkrrrr%sz#GunicornTokioWebWorker.init_processrjrrrrrsr)$__doc__r!r<r[rHr,typesrtypingrrrrrZgunicorn.configrraZgunicorn.workersr	Zaiohttpr
ZhelpersrZweb_appr
Zweb_logrrWrVImportErrorobject__all__ZWorkerrrrrrrr<module>s0

@
Back to Directory File Manager