ó
    	[hØ  ã                   ó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4S jr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      €Ú]/home/gothic/public_html/Fooocus/fooocus_env/lib64/python3.13/site-packages/aiohttp/worker.pyr   ÚGunicornWebWorker.__init__+   s+   ø€ Ü‰Ò˜$Ð% "Ò%à37ˆŒ
ØˆŒØ>BˆÕó    c                 óÜ   >• [         R                  " 5       R                  5         [         R                  " 5       U l        [         R
                  " U R                  5        [        TU ]  5         g ©N)ÚasyncioÚget_event_loopÚcloseÚnew_event_loopÚloopÚset_event_loopr   Úinit_process)r   r   s    €r   r)   ÚGunicornWebWorker.init_process2   sE   ø€ ä×ÒÓ ×&Ñ&Ô(ä×*Ò*Ó,ˆŒ	Ü×Ò˜tŸy™yÔ)ä‰ÑÕr    c                 óÜ  • 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 ! [
         a    U R                  R                  S5         N•f = f)NzException in gunicorn worker)r'   Úcreate_taskÚ_runr   Úrun_until_completeÚ	ExceptionÚlogÚ	exceptionÚshutdown_asyncgensr%   ÚsysÚexitr   ©r   s    r   ÚrunÚGunicornWebWorker.run;   sœ   € Ø—Y‘Y×*Ñ*¨4¯9©9«;Ó7ˆŒ
ð	?Ø�I‰I×(Ñ(¨¯©Ô4ð 	�	‰	×$Ñ$ T§Y¡Y×%AÑ%AÓ%CÔDØ�	‰	�‰Ôä�Š�—‘Õ øô ó 	?Ø�H‰H×ÑÐ=Ö>ð	?ús   °%C Ã%C+Ã*C+c           	   ƒ   ó2  #   • 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R                  U R                  5      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R0                  nUc   eU R2                   H1  n[        R4                  " UUUS9nUR7                  5       I S h  v•N   M3     [8        R:                  " 5       n	 U R<                  (       aë  U R?                  5         UR@                  n
U RB                  (       a3  X RB                  :”  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N: N9! [L         a     N0f = f N 7f)
N)é   é   zUwsgi app should be either Application or async function returning Application, got {}éd   é_   )ÚloggerÚkeepalive_timeoutÚ
access_logÚaccess_log_formatÚshutdown_timeout)Ússl_contextFzMax requests, shutting down: %sz!Parent changed, shutting down: %s)(Ú
isinstanceÚwsgir   ÚinspectÚiscoroutinefunctionr3   Úversion_infor#   r	   Ú	AppRunnerÚappÚRuntimeErrorÚformatÚcfgÚ	accesslogr0   r?   Ú	keepaliveÚ_get_valid_log_formatr@   Úgraceful_timeoutÚsetupÚis_sslÚ_create_ssl_contextÚserverÚsocketsÚSockSiteÚstartÚosÚgetpidÚaliveÚnotifyÚrequests_countÚmax_requestsÚinfoÚppidÚgetppidÚ_wait_next_notifyÚBaseExceptionÚcleanup)r   ÚrunnerrI   rD   r?   ÚctxrT   ÚsockÚsiteÚpidÚcnts              r   r-   ÚGunicornWebWorker._runG   s©  é € ØˆÜ�d—i‘i¤×-Ñ-Ø—)‘)‰CÜ×(Ò(¨¯©×3Ñ3Ü×Ñ˜wÓ&¬7×+FÒ+FÀtÇyÁy×+QÑ+QàŸ™›×$ˆDÜ˜$¤§¡×.Ñ.Ø�Ø—j‘j‘à‘äð?ß?E¹vÀdÇiÁiÓ?Póð ð
 ‰>Ø04·±×0B×0B˜Ÿ™×,Ò,ÈˆJÜ—]’]ØØ—x‘xØ"&§(¡(×"4Ñ"4Ø%Ø"&×"<Ñ"<Ø—H‘H×.Ñ.ó#ð "&§¡×!:Ñ!:¸SÑ!@À2Ñ!Eñ	ˆFð �l‰l‹n×Ðà48·H±H·O·Oˆd×&Ñ& t§x¡xÔ0ÈˆàˆØÑ!Ð!Ð!Ø—‘ˆØÑ!Ð!Ð!Ø—L”LˆDÜ—<’<ØØØñˆDð
 —*‘*“,×Òñ !ô �iŠi‹kˆð	Ø—*—*Ø—‘”à×+Ñ+�Ø×$×$¨×/@Ñ/@Ó)@Ø!&�D”JØ—H‘H—M‘MÐ"CÀTÕJàœBŸIšI›KÓ'¨D¯I©I¼¿º»Ó,EØ!&�D”JØ—H‘H—M‘MÐ"EÀtÕLà×0Ñ0Ó2×2Ð2ð —*—*‘*ð  �n‰nÓ×Ñòw %ò0 	ò ñ" 3øÜó 	Ùð	úñ 	ùs{   ‚B NÂ"M:Â#DNÆ9M=Æ:BNÉN ÉNÉ%C$N Í	NÍ
N Í!NÍ4NÍ5NÍ=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   ra   Ú#GunicornWebWorker._wait_next_notify‹   sZ   € Ø× Ñ Ô"à�y‰yˆØÑÐÐØ'+×'9Ñ'9Ó';Ð;ˆÔ˜fØ�	‰	×Ñ˜S $×":Ñ":¸FÔCàˆr    rp   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   rp   s     r   rm   Ú%GunicornWebWorker._notify_waiter_done•   s=   € ð ‰>Ø×(Ñ(ˆFØÑÜ�v˜tÔ$à×(Ñ(Ò(Ø"&ˆ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        g ©NF)r'   Úadd_signal_handlerÚsignalÚSIGQUITÚhandle_quitÚSIGTERMÚhandle_exitÚSIGINTÚSIGWINCHÚhandle_winchÚSIGUSR1Úhandle_usr1ÚSIGABRTÚhandle_abortÚsiginterruptr5   s    r   Úinit_signalsÚGunicornWebWorker.init_signals    s.  € ð 	�	‰	×$Ñ$Ü�N‰N˜D×,Ñ,¬f¯n©n¸dô	
ð 	�	‰	×$Ñ$Ü�N‰N˜D×,Ñ,¬f¯n©n¸dô	
ð 	�	‰	×$Ñ$Ü�M‰M˜4×+Ñ+¬V¯]©]¸Dô	
ð 	�	‰	×$Ñ$Ü�O‰O˜T×.Ñ.´·±Àô	
ð 	�	‰	×$Ñ$Ü�N‰N˜D×,Ñ,¬f¯n©n¸dô	
ð 	�	‰	×$Ñ$Ü�N‰N˜D×-Ñ-¬v¯~©~¸tô	
ô 	×ÒœFŸN™N¨EÔ2Ü×ÒœFŸN™N¨EÕ2r    ÚsigÚframec                 óh   • SU l         U R                  R                  U 5        U R                  5         g ru   )rZ   rL   Ú
worker_intrm   ©r   r†   r‡   s      r   ry   ÚGunicornWebWorker.handle_quitÂ   s+   € ØˆŒ
ð 	�‰×Ñ˜DÔ!ð 	× Ñ Õ"r    c                 ó‚   • SU l         SU l        U R                  R                  U 5        [        R
                  " S5        g )NFr
   )rZ   r   rL   Úworker_abortr3   r4   rŠ   s      r   r‚   ÚGunicornWebWorker.handle_abortË   s-   € ØˆŒ
ØˆŒØ�‰×Ñ˜dÔ#Ü�Š��r    rL   Ú
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.)ÚsslrJ   r�   Ússl_versionÚload_cert_chainÚcertfileÚkeyfileÚ	cert_reqsÚverify_modeÚca_certsÚload_verify_locationsÚciphersÚset_ciphers)rL   re   s     r   rS   Ú%GunicornWebWorker._create_ssl_contextÑ   s   € ô ‰;ÜÐ6Ó7Ð7ä�nŠn˜SŸ_™_Ó-ˆØ×Ñ˜CŸL™L¨#¯+©+Ô6ØŸ-™-ˆŒØ�<�<Ø×%Ñ% c§l¡lÔ3Ø�;�;Ø�O‰O˜CŸK™KÔ(Øˆ
r    Úsource_formatc                 óŠ   • XR                   :X  a  U R                  $ [        R                  " SU5      (       a  [	        S5      eU$ )Nz%\([^\)]+\)zêGunicorn'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   rO   Ú'GunicornWebWorker._get_valid_log_formatã   sE   € Ø×<Ñ<Ó<Ø×2Ñ2Ð2Ü�YŠY�~ }×5Ñ5Üð(óð ð !Ð r    )r   r   rZ   r   r'   ©r   N)r   rk   r"   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú
LOG_FORMATr    ÚGunicornAccessLogFormatÚdefaultrŸ   r   r   r)   r6   r-   ra   r   rm   r„   Úintr   ry   r‚   ÚstaticmethodrS   ÚstrrO   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r   &   sí   ø† à!-×!8Ñ!8ÐØ"9×"AÑ"AÐðC˜cð C¨ð C°÷ C÷ô
!ôBôHð :>ñ	'ØÐ5Ñ6ð	'à	õ	'ô3ðD#˜sð #¨8°IÑ+>ð #À4ô #ð ð ¨H°YÑ,?ð ÀDô ð ð ð ¨ó ó ðð"!°3ð !¸3÷ !ò !r    r   c                   ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )r   éò   c                 ó¸   >• SS K n[        R                  " 5       R                  5         [        R                  " UR                  5       5        [        TU ]  5         g r   )Úuvloopr#   r$   r%   Úset_event_loop_policyÚEventLoopPolicyr   r)   )r   r¶   r   s     €r   r)   Ú$GunicornUVLoopWebWorker.init_processó   sA   ø€ Ûô 	×ÒÓ ×&Ñ&Ô(ô
 	×%Ò% f×&<Ñ&<Ó&>Ô?ä‰ÑÕr    © r¥   )r¦   r§   r¨   r©   r)   r°   r±   r²   s   @r   r   r   ò   s   ø† ÷õ r    r   )"Ú__doc__r#   rE   rX   r¡   rw   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ðÛà—^‘^ˆ
ð ;€ôI!˜Ÿ™ô I!ôXÐ/õ øði ó ØˆØŠ
ðús   Á(B Â
B(Â'B(