id;"<dZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z m Z ddlmZddlmZddlmZdd lmZdd lmZdd lmZ ddlZejZn#e$rdZeZYnwxYwd ZGd dej Z!Gdde!Z"Gdde!Z#dS)z%Async gunicorn worker for aiohttp.webN) FrameType)Any AwaitableCallableOptionalUnion)AccessLogFormat)base)web) set_result) Application) AccessLogger)GunicornWebWorkerGunicornUVLoopWebWorkerGunicornTokioWebWorkerceZdZejZejZde de ddffd Z dfd Z ddZ ddZ dd Z dd ed ddfd Zdd ZdededdfdZdededdfdZede ddfdZdedefdZxZS)rargskwreturnNcdtj|i|d|_d|_d|_dSNr)super__init___task exit_code_notify_waiter)selfrr __class__s C/opt/cloudlinux/venv/lib/python3.11/site-packages/aiohttp/worker.pyrzGunicornWebWorker.__init__%s;$%"%%%37 >Bctjtj|_tj|jt dSN)asyncioget_event_loopclosenew_event_looploopset_event_loopr init_process)rrs r r*zGunicornWebWorker.init_process,s]  &&(((*,, ty))) r!c|j||_ |j|jn*#t $r|jdYnwxYw|j|j|j tj |j dS)NzException in gunicorn worker) r( create_task_runrrun_until_complete Exceptionlog exceptionshutdown_asyncgensr&sysexitrrs r runzGunicornWebWorker.run5sY**499;;77  ? I ( ( 4 4 4 4 ? ? ? H  = > > > > > ? $$TY%A%A%C%CDDD       sA$A:9A:c rKd}t|jtr|j}ntj|jrA|d{V}t|t jr |}|j}n*|}n'td |j|_|j j r |j j nd}t j||j |j j|||j j}|d{V|j jr||j nd}|}|j}|jD]D}t j||||j jdz dz}|d{VEt3j} |jr||j} |j jr3| |j jkr#d|_|j d|np| t3jkr?|j t3j!kr#d|_|j d|n|"d{V|jn#tF$rYnwxYw|$d{VdS) NzUwsgi app should be either Application or async function returning Application, got {})loggerkeepalive_timeout access_logaccess_log_formatd_) ssl_contextshutdown_timeoutFzMax requests, shutting down: %sz!Parent changed, shutting down: %s)% isinstancewsgirr$iscoroutinefunctionr AppRunnerapp RuntimeErrorformatcfg accesslogr0r: keepalive_get_valid_log_formatr;setupis_ssl_create_ssl_contextserversocketsSockSitegraceful_timeoutstartosgetpidalivenotifyrequests_count max_requestsinfoppidgetppid_wait_next_notify BaseExceptioncleanup) rrunnerrDrAr:ctxrNsocksitepidcnts r r-zGunicornWebWorker._runAs di - - )CC  ( 3 3 $$$$$$D$ .. j??Evdi?P?P  >040BL,,J]x"&("4%"&"<"<H.## Fllnn48HOMd&&tx000L  D<!%!:S!@2!E D **,,        ikk * 3 +8(3S483H-H-H!&DJHMM"CTJJJJBIKK''DI,E,E!&DJHMM"EtLLLL00222222222* 3    D nns4CJ JJasyncio.Future[bool]c||j}|x|_}|jd|j||S)Ng?)_notify_waiter_doner( create_futurer call_later)rr(waiters r r\z#GunicornWebWorker._wait_next_notifysV   """y'+'9'9';';;f S$":FCCC r!rjc`||j}|t|d||jur d|_dSdS)NT)rr )rrjs r rgz%GunicornWebWorker._notify_waiter_donesK >(F   vt $ $ $ T( ( ("&D    ) (r!c|jtj|jtjd|jtj|jtjd|jtj|jtjd|jtj|j tjd|jtj |j tj d|jtj |j tj dtjtjdtjtj dtjdkr+tjtjtjdSdS)NF))r(add_signal_handlersignalSIGQUIT handle_quitSIGTERM handle_exitSIGINTSIGWINCH handle_winchSIGUSR1 handle_usr1SIGABRT handle_abort siginterruptr3 version_infoSIGCHLDSIG_DFLr5s r init_signalszGunicornWebWorker.init_signalssl $$ ND,fnd    $$ ND,fnd    $$ M4+V]D    $$ OT.    $$ ND,fnd    $$ ND-v~t   FNE222FNE222  f $ $ M&.&. 9 9 9 9 9 % $r!sigframecpd|_|j||dS)NF)rUrG worker_intrgrrrs r rrzGunicornWebWorker.handle_quits;  D!!!   """""r!c~d|_d|_|j|t jddS)NFr )rUrrG worker_abortr3r4rs r r{zGunicornWebWorker.handle_aborts7  d###  r!rG SSLContextc@ttdtj|j}||j|j|j|_|j r| |j |j r| |j |S)z~Creates SSLContext instance for usage in asyncio.create_server. See ssl.SSLSocket.__init__ for more details. NzSSL is not supported.) sslrEr ssl_versionload_cert_chaincertfilekeyfile cert_reqs verify_modeca_certsload_verify_locationsciphers set_ciphers)rGr`s r rMz%GunicornWebWorker._create_ssl_contexts ;677 7nS_-- CL#+666- < 4  % %cl 3 3 3 ; ) OOCK ( ( ( r! source_formatcr||jkr|jStjd|rt d|S)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)rrs r rJz'GunicornWebWorker._get_valid_log_formatsL D< < <2 2 Y~} 5 5 !( ! r!rN)rrer#)__name__ __module__ __qualname__r LOG_FORMATrGunicornAccessLogFormatdefaultrrrr*r6r-r\rrgrintrrrr{ staticmethodrMstrrJ __classcell__rs@r rr s!-!8"9"ACcCCCCCCCC ! ! ! !@@@@D:> ' '56 '  ' ' ' '&:&:&:&:P#s#9#####I$ \" !3 !3 ! ! ! ! ! ! ! !r!rc eZdZdfd ZxZS)rrNcddl}tjtj|t dSr)uvloopr$r%r&set_event_loop_policyEventLoopPolicyrr*)rrrs r r*z$GunicornUVLoopWebWorker.init_processsd    &&((( %f&<&<&>&>??? r!rrrrr*rrs@r rr=          r!rc eZdZdfd ZxZS)rrNcddl}tjtj|t dSr)tokior$r%r&rrrr*)rrrs r r*z#GunicornTokioWebWorker.init_processsd    &&((( %e&;&;&=&=>>> r!rrrs@r rrrr!r)$__doc__r$rSrrpr3typesrtypingrrrrrgunicorn.configr rgunicorn.workersr aiohttpr helpersr web_apprweb_logrrr ImportErrorobject__all__Workerrrrr!r rs++ <<<<<<<<<<<<<<FFFFFF!!!!!! !!!!!!JJJJJ CJJJ UM!M!M!M!M! M!M!M!`     /        .     s A A('A(