§
    ­˜ºhØ  ã                   ó<  — d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ e
rddlZej        Zn	 ddlZej        Zn# e$ r dZeZY nw xY wdZ G d„ dej        ¦  «        Z  G d„ de ¦  «        Z!dS )z%Async gunicorn worker for aiohttp.webé    N)Ú	FrameType)ÚTYPE_CHECKINGÚAnyÚOptional)ÚAccessLogFormat)Úbase)Úwebé   )Ú
set_result)ÚApplication)ÚAccessLogger)ÚGunicornWebWorkerÚGunicornUVLoopWebWorkerc                   ó  ‡ — e Zd Zej        Zej        Zde	de	ddfˆ fd„Z
dˆ fd„Zdd„Zdd„Zdd
„Z	 dded	         ddfd„Zdd„Zdedee         ddfd„Zdedee         ddfd„Zede	ddfd„¦   «         Zdedefd„Zˆ xZS )r   ÚargsÚkwÚreturnNc                 ód   •—  t          ¦   «         j        |i |¤Ž d | _        d| _        d | _        d S ©Nr   )ÚsuperÚ__init__Ú_taskÚ	exit_codeÚ_notify_waiter)Úselfr   r   Ú	__class__s      €úV/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/aiohttp/worker.pyr   zGunicornWebWorker.__init__+   s;   ø€ Ø�‰ŒÔ˜$Ð% "Ð%Ð%Ð%à37ˆŒ
ØˆŒØ>BˆÔÐÐó    c                 óô   •— t          j        ¦   «                              ¦   «          t          j        ¦   «         | _        t          j        | j        ¦  «         t          ¦   «                              ¦   «          d S ©N)ÚasyncioÚget_event_loopÚcloseÚnew_event_loopÚloopÚset_event_loopr   Úinit_process)r   r   s    €r   r'   zGunicornWebWorker.init_process2   s]   ø€ åÔÑ Ô ×&Ò&Ñ(Ô(Ð(åÔ*Ñ,Ô,ˆŒ	ÝÔ˜tœyÑ)Ô)Ð)å‰Œ×ÒÑÔÐÐÐr   c                 óÄ  — | j                              |                      ¦   «         ¦  «        | _        	 | j                              | j        ¦  «         n*# t
          $ r | j                             d¦  «         Y nw xY w| j                              | j                              ¦   «         ¦  «         | j          	                    ¦   «          t          j        | j        ¦  «         d S )NzException in gunicorn worker)r%   Úcreate_taskÚ_runr   Úrun_until_completeÚ	ExceptionÚlogÚ	exceptionÚshutdown_asyncgensr#   ÚsysÚexitr   ©r   s    r   ÚrunzGunicornWebWorker.run;   sÇ   € Ø”Y×*Ò*¨4¯9ª9©;¬;Ñ7Ô7ˆŒ
ð	?ØŒI×(Ò(¨¬Ñ4Ô4Ð4Ð4øÝð 	?ð 	?ð 	?ØŒH×ÒÐ=Ñ>Ô>Ð>Ð>Ð>ð	?øøøàŒ	×$Ò$ T¤Y×%AÒ%AÑ%CÔ%CÑDÔDÐDØŒ	�ŠÑÔÐåŒ�”Ñ Ô Ð Ð Ð s   ³A Á$A:Á9A:c           	   ƒ   óÀ  K  — d }t          | j        t          ¦  «        r| j        }nªt          j        | j        ¦  «        s)t
          j        dk     rZt          j        | j        ¦  «        rA|                      ¦   «         ƒ d {V —†}t          |t          j	        ¦  «        r
|}|j
        }n*|}n't          d                     | j        ¦  «        ¦  «        ‚|€p| j        j        r| j        j        nd }t          j	        || j        | j        j        ||                      | j        j        ¦  «        | j        j        dz  dz  ¬¦  «        }|                     ¦   «         ƒ d {V —† | j        j        r|                      | j        ¦  «        nd }|}|€J ‚|j        }|€J ‚| j        D ]3}t          j        |||¬¦  «        }|                     ¦   «         ƒ d {V —† Œ4t9          j        ¦   «         }		 | j        rÇ|                      ¦   «          |j         }
| j!        r.|
| j!        k    r#d| _        | j         "                    d| ¦  «         np|	t9          j        ¦   «         k    r?| j#        t9          j$        ¦   «         k    r#d| _        | j         "                    d	| ¦  «         n|  %                    ¦   «         ƒ d {V —† | j        °Çn# tL          $ r Y nw xY w| '                    ¦   «         ƒ d {V —† d S )
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Úiscoroutinefunctionr0   Úversion_infor!   r	   Ú	AppRunnerÚappÚRuntimeErrorÚformatÚcfgÚ	accesslogr-   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   ÚrunnerrE   r@   r;   ÚctxrP   ÚsockÚsiteÚpidÚcnts              r   r*   zGunicornWebWorker._runG   s,  è è € ØˆÝ�d”i¥Ñ-Ô-ð 	Ø”)ˆCˆCÝÔ(¨¬Ñ3Ô3ð 	ÝÔ˜wÒ&Ð&­7Ô+FÀtÄyÑ+QÔ+QÐ&àŸš™œÐ$Ð$Ð$Ð$Ð$Ð$ˆDÝ˜$¥¤Ñ.Ô.ð Ø�Ø”j��à��åð?ß?EºvÀdÄiÑ?PÔ?Pñô ð ð
 ˆ>Ø04´Ô0BÐL˜œÔ,Ð,ÈˆJÝ”]ØØ”xØ"&¤(Ô"4Ø%Ø"&×"<Ò"<Ø”HÔ.ñ#ô #ð "&¤Ô!:¸SÑ!@À2Ñ!Eð	ñ 	ô 	ˆFð �lŠl‰nŒnÐÐÐÐÐÐÐà48´H´OÐMˆd×&Ò& t¤xÑ0Ô0Ð0ÈˆàˆØÐ!Ð!Ð!Ø”ˆØÐ!Ð!Ð!Ø”Lð 	ð 	ˆDÝ”<ØØØðñ ô ˆDð
 —*’*‘,”,ÐÐÐÐÐÐÐÐõ Œi‰kŒkˆð	Ø”*ð 3Ø—’‘”�àÔ+�ØÔ$ð 3¨¨tÔ/@Ò)@Ð)@Ø!&�D”JØ”H—M’MÐ"CÀTÑJÔJÐJÐJà�BœI™KœKÒ'Ð'¨D¬I½¼¹¼Ò,EÐ,EØ!&�D”JØ”H—M’MÐ"EÀtÑLÔLÐLÐLà×0Ò0Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð ”*ð 3øøõ ð 	ð 	ð 	ØˆDð	øøøð �nŠnÑÔÐÐÐÐÐÐÐÐÐs   Ç%CJ4 Ê4
KË Kúasyncio.Future[bool]c                 ó¼   — |                       ¦   «          | j        }|€J ‚|                     ¦   «         x| _        }| j                             d| j         |¦  «         |S )Ng      ð?)Ú_notify_waiter_doner%   Úcreate_futurer   Ú
call_later)r   r%   Úwaiters      r   r]   z#GunicornWebWorker._wait_next_notify‹   sb   € Ø× Ò Ñ"Ô"Ð"àŒyˆØÐÐÐØ'+×'9Ò'9Ñ';Ô';Ð;ˆÔ˜fØŒ	×Ò˜S $Ô":¸FÑCÔCÐCàˆr   rk   c                 ó`   — |€| j         }|�t          |d¦  «         || j         u r	d | _         d S d S )NT)r   r   )r   rk   s     r   rh   z%GunicornWebWorker._notify_waiter_done•   sK   € ð ˆ>ØÔ(ˆFØÐÝ�v˜tÑ$Ô$Ð$à�TÔ(Ð(Ð(Ø"&ˆDÔÐÐð )Ð(r   c                 ó
  — | j                              t          j        | j        t          j        d ¦  «         | j                              t          j        | j        t          j        d ¦  «         | j                              t          j        | j        t          j        d ¦  «         | j                              t          j        | j	        t          j        d ¦  «         | j                              t          j
        | j        t          j
        d ¦  «         | j                              t          j        | j        t          j        d ¦  «         t          j        t          j        d¦  «         t          j        t          j
        d¦  «         d S ©NF)r%   Úadd_signal_handlerÚsignalÚSIGQUITÚhandle_quitÚSIGTERMÚhandle_exitÚSIGINTÚSIGWINCHÚhandle_winchÚSIGUSR1Úhandle_usr1ÚSIGABRTÚhandle_abortÚsiginterruptr2   s    r   Úinit_signalszGunicornWebWorker.init_signals    s<  € ð 	Œ	×$Ò$ÝŒN˜DÔ,­f¬n¸dñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒN˜DÔ,­f¬n¸dñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒM˜4Ô+­V¬]¸Dñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒO˜TÔ.µ´Àñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒN˜DÔ,­f¬n¸dñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒN˜DÔ-­v¬~¸tñ	
ô 	
ð 	
õ 	Ô�FœN¨EÑ2Ô2Ð2ÝÔ�FœN¨EÑ2Ô2Ð2Ð2Ð2r   ÚsigÚframec                 óp   — d| _         | j                             | ¦  «         |                      ¦   «          d S rn   )rV   rH   Ú
worker_intrh   ©r   r~   r   s      r   rr   zGunicornWebWorker.handle_quitÂ   s;   € ØˆŒ
ð 	Œ×Ò˜DÑ!Ô!Ð!ð 	× Ò Ñ"Ô"Ð"Ð"Ð"r   c                 ó~   — d| _         d| _        | j                             | ¦  «         t	          j        d¦  «         d S )NFr
   )rV   r   rH   Úworker_abortr0   r1   r‚   s      r   r{   zGunicornWebWorker.handle_abortË   s7   € ØˆŒ
ØˆŒØŒ×Ò˜dÑ#Ô#Ð#ÝŒ�‰Œˆˆˆr   rH   Ú
SSLContextc                 ó@  — t           €t          d¦  «        ‚t          j        | 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.
        NzSSL is not supported.)ÚsslrF   r…   Ússl_versionÚload_cert_chainÚcertfileÚkeyfileÚ	cert_reqsÚverify_modeÚca_certsÚload_verify_locationsÚciphersÚset_ciphers)rH   ra   s     r   rO   z%GunicornWebWorker._create_ssl_contextÑ   s�   € õ ˆ;ÝÐ6Ñ7Ô7Ð7åŒn˜Sœ_Ñ-Ô-ˆØ×Ò˜CœL¨#¬+Ñ6Ô6Ð6Øœ-ˆŒØŒ<ð 	4Ø×%Ò% c¤lÑ3Ô3Ð3ØŒ;ð 	)Ø�OŠO˜CœKÑ(Ô(Ð(Øˆ
r   Úsource_formatc                 ór   — || j         k    r| j        S t          j        d|¦  «        rt	          d¦  «        ‚|S )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   rK   z'GunicornWebWorker._get_valid_log_formatã   sL   € Ø˜DÔ<Ò<Ð<ØÔ2Ð2ÝŒY�~ }Ñ5Ô5ð 		!Ýð(ñô ð ð !Ð r   ©r   N)r   rf   r    )Ú__name__Ú
__module__Ú__qualname__r   Ú
LOG_FORMATr•   ÚGunicornAccessLogFormatÚdefaultr”   r   r   r'   r3   r*   r]   r   rh   r}   Úintr   rr   r{   ÚstaticmethodrO   ÚstrrK   Ú__classcell__©r   s   @r   r   r   &   sÁ  ø€ € € € € à!-Ô!8ÐØ"9Ô"AÐðC˜cð C¨ð C°ð Cð Cð Cð Cð Cð Cðð ð ð ð ð ð
!ð 
!ð 
!ð 
!ðBð Bð Bð BðHð ð ð ð :>ð	'ð 	'ØÐ5Ô6ð	'à	ð	'ð 	'ð 	'ð 	'ð3ð 3ð 3ð 3ðD#˜sð #¨8°IÔ+>ð #À4ð #ð #ð #ð #ð ð ¨H°YÔ,?ð ÀDð ð ð ð ð ð ð ¨ð ð ð ñ „\ðð"!°3ð !¸3ð !ð !ð !ð !ð !ð !ð !ð !r   r   c                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )r   r   Nc                 óæ   •— dd l }t          j        ¦   «                              ¦   «          t          j        |                     ¦   «         ¦  «         t          ¦   «                              ¦   «          d S r   )Úuvloopr!   r"   r#   Úset_event_loop_policyÚEventLoopPolicyr   r'   )r   r§   r   s     €r   r'   z$GunicornUVLoopWebWorker.init_processó   sd   ø€ Øˆˆˆõ 	ÔÑ Ô ×&Ò&Ñ(Ô(Ð(õ
 	Ô% f×&<Ò&<Ñ&>Ô&>Ñ?Ô?Ð?å‰Œ×ÒÑÔÐÐÐr   r™   )rš   r›   rœ   r'   r£   r¤   s   @r   r   r   ò   s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð r   r   )"Ú__doc__r!   rA   rT   r–   rp   r0   Útypesr   Útypingr   r   r   Úgunicorn.configr   rž   Úgunicorn.workersr   Úaiohttpr	   Úhelpersr   Úweb_appr   Úweb_logr   r‡   r…   ÚImportErrorÚobjectÚ__all__ÚWorkerr   r   © r   r   ú<module>r¸      s¨  ðØ +Ð +à €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à FÐ FÐ FÐ FÐ FÐ FØ !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø !Ð !Ð !Ð !Ð !Ð !àð Ø€J€J€Jà”€J€JðØˆ
ˆ
ˆ
à”^ˆ
ˆ
øØð ð ð ØˆØˆ
ˆ
ˆ
ðøøøð
 ;€ðI!ð I!ð I!ð I!ð I!˜œñ I!ô I!ð I!ðXð ð ð ð Ð/ñ ô ð ð ð s   ÁA* Á*	A6Á5A6