
    5pj#                     V   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
JrJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  \
(       a  SSKr\R6                  rO SSKr\R6                  rSr " S S\R>                  5      r  " S S\ 5      r!g! \ a    Sr\r N/f = f)z%Async gunicorn worker for aiohttp.web    N)	FrameType)TYPE_CHECKINGAnyOptional)AccessLogFormat)base)web   )
set_result)Application)AccessLogger)GunicornWebWorkerGunicornUVLoopWebWorkerc                   $  ^  \ rS rSr\R
                  r\R                  r	S\
S\
SS4U 4S jjrSU 4S jjrSS jrSS	 jrSS jr SS\S
   SS4S jjrSS jrS\S\S-  SS4S jrS\S\S-  SS4S jr\S\
SS4S j5       rS\S\4S jrSrU =r$ )r   &   argskwreturnNc                 P   > [         TU ]  " U0 UD6  S U l        SU l        S U l        g Nr   )super__init___task	exit_code_notify_waiter)selfr   r   	__class__s      J/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/aiohttp/worker.pyr   GunicornWebWorker.__init__*   s+    $%"%04
;?    c                    >  [         R                  " 5       R                  5         [         R                  " 5       U l        [         R                  " U R
                  5        [        TU ]!  5         g ! [         a     NUf = fN)	asyncioget_event_loopcloseRuntimeErrornew_event_looploopset_event_loopr   init_process)r   r   s    r   r*   GunicornWebWorker.init_process1   s`    	""$**,
 **,	tyy)  		s   #A/ /
A<;A<c                 8   SU l         U R                  R                  U R                  5       5      U l         U R                  R                  U R                  5        U R                  R                  U R                  R                  5       5        U R                  R                  5         [        R                  " U R                  5        g ! U R                  R                  U R                  R                  5       5        U R                  R                  5         f = fNF)bootedr(   create_task_runr   run_until_completeshutdown_asyncgensr%   sysexitr   r   s    r   runGunicornWebWorker.run>   s     YY**499;7
	II((4II(()E)E)GHIIOO  II(()E)E)GHIIOOs   %C
 
ADc           	      (  #    S n[        U R                  [        5      (       a  U R                  nO[        R                  " U R                  5      (       d9  [
        R                  S:  an  [        R                  " U R                  5      (       aI  U R                  5       I S h  vN n[        U[        R                  5      (       a  UnUR                  nOUnO[        SU R                   35      eUc  U R                  R                  (       a  U R                  R                  OS n[        R                  " UU R                  U R                  R                   UU R#                  U R                  R$                  5      U R                  R&                  S-  S-  S9nUR)                  5       I S h  vN   U R                  R*                  (       a  U R-                  U R                  5      OS nUnUc   eUR.                  nUc   eU R0                   H1  n[        R2                  " UUUS9nUR5                  5       I S h  vN   M3     SU l        [8        R:                  " 5       n	 U R<                  (       a  U R?                  5         UR@                  n
U RB                  (       a3  XRB                  :  a$  SU l        U R                  RE                  S	U 5        OxU	[8        R:                  " 5       :X  aG  U RF                  [8        RH                  " 5       :w  a$  SU l        U R                  RE                  S
U 5        OU RK                  5       I S h  vN   U R<                  (       a  M  URO                  5       I S h  vN   g  GN GN GNA N9! [L         a     N0f = f N 7f)N)      zSwsgi app should be either Application or async function returning Application, got d   _   )loggerkeepalive_timeout
access_logaccess_log_formatshutdown_timeout)ssl_contextTFzMax requests, shutting down: %sz!Parent changed, shutting down: %s)(
isinstancewsgir   inspectiscoroutinefunctionr3   version_infor#   r	   	AppRunnerappr&   cfg	accessloglogr?   	keepalive_get_valid_log_formatr@   graceful_timeoutsetupis_ssl_create_ssl_contextserversocketsSockSitestartr.   osgetpidalivenotifyrequests_countmax_requestsinfoppidgetppid_wait_next_notify	Exceptioncleanup)r   runnerrI   rD   r?   ctxrS   socksitepidcnts              r   r0   GunicornWebWorker._runP   s    dii--))C((33w&7+F+Ftyy+Q+Q$D$..jj==AYYKI 
 >040B0B,,J]]xx"&(("4"4%"&"<"<HH..# "&!:!:S!@2!E	F lln48HHOOd&&txx0!!!!!!LLD<<D
 **, !  iik	**++$$/@/@)@!&DJHHMM"CTJBIIK'DII,E!&DJHHMM"EtL00222 ***  nnC %0 	 . 3 		 	s{   B N"M5#D
N-M8.BN:M;;$N C$N  M>N  N/N0N8N;N>N   
N
NNNasyncio.Future[bool]c                     U R                  5         U R                  nUc   eUR                  5       =U l        nU R                  R	                  SU R                   U5        U$ )Ng      ?)_notify_waiter_doner(   create_futurer   
call_later)r   r(   waiters      r   r`   #GunicornWebWorker._wait_next_notify   sZ      "yy'+'9'9';;f		S$":":FCr    ro   c                 l    Uc  U R                   nUb  [        US5        XR                   L a  S U l         g g )NT)r   r   )r   ro   s     r   rl   %GunicornWebWorker._notify_waiter_done   s=     >((Fvt$((("&D )r    c                 .   U R                   R                  [        R                  U R                  [        R                  S 5        U R                   R                  [        R
                  U R                  [        R
                  S 5        U R                   R                  [        R                  U R                  [        R                  S 5        U R                   R                  [        R                  U R                  [        R                  S 5        U R                   R                  [        R                  U R                  [        R                  S 5        U R                   R                  [        R                  U R                  [        R                  S 5        [        R                  " [        R
                  S5        [        R                  " [        R                  S5        [        R                  " [        R                  [        R                   5        g r-   )r(   add_signal_handlersignalSIGQUIThandle_quitSIGTERMhandle_exitSIGINTSIGWINCHhandle_winchSIGUSR1handle_usr1SIGABRThandle_abortsiginterruptSIGCHLDSIG_DFLr5   s    r   init_signalsGunicornWebWorker.init_signals   sF    			$$NND,,fnnd	
 			$$NND,,fnnd	
 			$$MM4++V]]D	
 			$$OOT..	
 			$$NND,,fnnd	
 			$$NND--v~~t	
 	FNNE2FNNE2 	fnnfnn5r    sigframec                 h    SU l         U R                  R                  U 5        U R                  5         g r-   )rY   rJ   
worker_intrl   r   r   r   s      r   rw   GunicornWebWorker.handle_quit   s+    
 	D! 	  "r    c                     SU l         SU l        U R                  R                  U 5        [        R
                  " S5        g )NFr
   )rY   r   rJ   worker_abortr3   r4   r   s      r   r   GunicornWebWorker.handle_abort   s-    
d#r    rJ   
SSLContextc                    [         c  [        S5      e[         R                  " U R                  5      nUR	                  U R
                  U R                  5        U R                  Ul        U R                  (       a  UR                  U R                  5        U R                  (       a  UR                  U R                  5        U$ )znCreates SSLContext instance for usage in asyncio.create_server.

See ssl.SSLSocket.__init__ for more details.
zSSL is not supported.)sslr&   r   ssl_versionload_cert_chaincertfilekeyfile	cert_reqsverify_modeca_certsload_verify_locationsciphersset_ciphers)rJ   rd   s     r   rR   %GunicornWebWorker._create_ssl_context   s     ;677nnS__-CLL#++6--<<%%cll3;;OOCKK(
r    source_formatc                     XR                   :X  a  U R                  $ [        R                  " SU5      (       a  [	        S5      eU$ )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_FORMATDEFAULT_AIOHTTP_LOG_FORMATresearch
ValueError)r   r   s     r   rN   'GunicornWebWorker._get_valid_log_format   sE    <<<222YY~}55(  ! r    )r   r   rY   r.   r   r(   r   N)r   rj   r"   )__name__
__module____qualname____firstlineno__r   
LOG_FORMATr   GunicornAccessLogFormatdefaultr   r   r   r*   r6   r0   r`   r   rl   r   intr   rw   r   staticmethodrR   strrN   __static_attributes____classcell__r   s   @r   r   r   &   s    !-!8!8"9"A"A@c @ @ @!$HT :>	'56	'		'$6L#s #9t+; # # I,<      "!3 !3 ! !r    r   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )r   i  c                    > SS K n [        R                  " 5       R                  5         [        R
                  " UR                  5       5        [        TU ]!  5         g ! [         a     N?f = fr   )	uvloopr#   r$   r%   r&   set_event_loop_policyEventLoopPolicyr   r*   )r   r   r   s     r   r*   $GunicornUVLoopWebWorker.init_process  sX    	""$**, 	%%f&<&<&>?  		s   #A 
A*)A* r   )r   r   r   r   r*   r   r   r   s   @r   r   r     s     r    r   )"__doc__r#   rE   rW   r   ru   r3   typesr   typingr   r   r   gunicorn.configr   r   gunicorn.workersr   aiohttpr	   helpersr   web_appr   web_logr   r   r   ImportErrorobject__all__Workerr   r   r   r    r   <module>r      s    +   	 	  
  / / F !     !J^^
 ;\! \!~/ O  
s   (B 
B('B(