Ë
    @Øïi[  ã                   ó�   — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ  G d„ de
«      Z G d	„ d
e«      Zy)é    N)ÚAnyÚDict)ÚArbiter)ÚWorker)ÚConfig)ÚServerc                   ó„   ‡ — e Zd ZU dZdddœZeeef   ed<   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„Zdd„Zˆ xZS )ÚUvicornWorkerzv
    A worker class for Gunicorn that interfaces with an ASGI consumer callable,
    rather than a WSGI callable.
    Úauto©ÚloopÚhttpÚCONFIG_KWARGSÚargsÚkwargsÚreturnNc           	      óÂ  •— t        t        | �
  |i |¤Ž t        j                  d«      }| j
                  j                  j                  |_        |j                  | j
                  j                  j                  «       d|_
        t        j                  d«      }| j
                  j                  j                  |_        |j                  | j
                  j                  j                  «       d|_
        d d | j                  j                  | j                  | j                  | j                   | j                  j"                  dœ}| j                  j$                  �r| j                  j&                  j)                  d«      | j                  j&                  j)                  d«      | j                  j&                  j)                  d«      | j                  j&                  j)                  d«      | j                  j&                  j)                  d	«      | j                  j&                  j)                  d
«      | j                  j&                  j)                  d«      dœ}|j+                  |«       | j                  j,                  d   j.                  r&| j                  j,                  d   j.                  |d<   |j+                  | j0                  «       t3        di |¤Ž| _        y )Nzuvicorn.errorFzuvicorn.access)ÚappÚ
log_configÚtimeout_keep_aliveÚtimeout_notifyÚcallback_notifyÚlimit_max_requestsÚforwarded_allow_ipsÚkeyfileÚcertfileÚpasswordÚssl_versionÚ	cert_reqsÚca_certsÚciphers)Ússl_keyfileÚssl_certfileÚssl_keyfile_passwordr   Ússl_cert_reqsÚssl_ca_certsÚssl_ciphersÚbacklog© )Úsuperr
   Ú__init__ÚloggingÚ	getLoggerÚlogÚ	error_logÚhandlersÚsetLevelÚlevelÚ	propagateÚ
access_logÚcfgÚ	keepaliveÚtimeoutr   Úmax_requestsr   Úis_sslÚssl_optionsÚgetÚupdateÚsettingsÚvaluer   r   Úconfig)Úselfr   r   ÚloggerÚconfig_kwargsÚ
ssl_kwargsÚ	__class__s         €úI/var/www/html/aiagents/fe/lib/python3.12/site-packages/uvicorn/workers.pyr+   zUvicornWorker.__init__   s  ø€ ÜŒm˜TÑ+¨TÐ<°VÒ<ä×"Ñ" ?Ó3ˆØŸ(™(×,Ñ,×5Ñ5ˆŒØ�‰˜Ÿ™×*Ñ*×0Ñ0Ô1Ø ˆÔä×"Ñ"Ð#3Ó4ˆØŸ(™(×-Ñ-×6Ñ6ˆŒØ�‰˜Ÿ™×+Ñ+×1Ñ1Ô2Ø ˆÔð ØØ"&§(¡(×"4Ñ"4Ø"Ÿl™lØ#×3Ñ3Ø"&×"3Ñ"3Ø#'§8¡8×#?Ñ#?ñ
ˆð �8‰8�?‹?à#Ÿx™x×3Ñ3×7Ñ7¸	ÓBØ $§¡× 4Ñ 4× 8Ñ 8¸Ó DØ(,¯©×(<Ñ(<×(@Ñ(@ÀÓ(LØ#Ÿx™x×3Ñ3×7Ñ7¸ÓFØ!%§¡×!5Ñ!5×!9Ñ!9¸+Ó!FØ $§¡× 4Ñ 4× 8Ñ 8¸Ó DØ#Ÿx™x×3Ñ3×7Ñ7¸	ÓBñˆJð × Ñ  Ô,à�8‰8×Ñ˜YÑ'×-Ò-Ø'+§x¡x×'8Ñ'8¸Ñ'C×'IÑ'IˆM˜)Ñ$à×Ñ˜T×/Ñ/Ô0äÑ-˜}Ñ-ˆ�ó    c                 ó^   •— | j                   j                  «        t        t        | �  «        y ©N)r?   Úsetup_event_loopr*   r
   Úinit_process)r@   rD   s    €rE   rJ   zUvicornWorker.init_process@   s    ø€ Ø�‰×$Ñ$Ô&ÜŒm˜TÑ/Õ1rF   c                 ó  — | j                   D ]&  }t        j                  |t        j                  «       Œ( t        j                  t        j                  | j                  «       t        j
                  t        j                  d«       y )NF)ÚSIGNALSÚsignalÚSIG_DFLÚSIGUSR1Úhandle_usr1Úsiginterrupt)r@   Úss     rE   Úinit_signalszUvicornWorker.init_signalsD   sW   € ð —‘ò 	-ˆAÜ�M‰M˜!œVŸ^™^Õ,ð	-ô 	�‰”f—n‘n d×&6Ñ&6Ô7ä×ÑœFŸN™N¨EÕ2rF   c                 ó    — t        j                  «       }|j                  t        j                  | j
                  t        j                  d«       y)z¡Install a SIGQUIT handler on workers.

        - https://github.com/encode/uvicorn/issues/1116
        - https://github.com/benoitc/gunicorn/issues/2604
        N)ÚasyncioÚget_running_loopÚadd_signal_handlerrM   ÚSIGQUITÚhandle_exit)r@   r   s     rE   Ú_install_sigquit_handlerz&UvicornWorker._install_sigquit_handlerO   s5   € ô ×'Ñ'Ó)ˆØ×Ñ¤§¡°×0@Ñ0@Ä&Ç.Á.ÐRVÕWrF   c              ƒ   ó:  K  — | j                   | j                  _        t        | j                  ¬«      }| j	                  «        |j                  | j                  ¬«      ƒ d {  –—†  |j                  s$t        j                  t        j                  «       y y 7 Œ5­w)N)r?   )Úsockets)Úwsgir?   r   r   rZ   Úserver\   ÚstartedÚsysÚexitr   ÚWORKER_BOOT_ERROR)r@   Úservers     rE   Ú_servezUvicornWorker._serveY   sj   è ø€ ØŸ)™)ˆ�‰ŒÜ˜tŸ{™{Ô+ˆØ×%Ñ%Ô'Ø�l‰l 4§<¡<ˆlÓ0×0Ð0Ø�~Š~Ü�H‰H”W×.Ñ.Õ/ð ð 	1ús   ‚A!BÁ#BÁ$6Bc                 óH   — t        j                  | j                  «       «      S rH   )rU   Úrunrd   ©r@   s    rE   rf   zUvicornWorker.runa   s   € Ü�{‰{˜4Ÿ;™;›=Ó)Ð)rF   c              ƒ   ó,   K  — | j                  «        y ­wrH   )Únotifyrg   s    rE   r   zUvicornWorker.callback_notifyd   s   è ø€ Ø�‰�ùs   ‚)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ústrr   Ú__annotations__r+   rJ   rS   rZ   rd   rf   r   Ú__classcell__)rD   s   @rE   r
   r
      s[   ø… ñð
 .4¸VÑ$D€M�4˜˜S˜‘>ÓDð(.˜cð (.¨Sð (.°Tõ (.õT2ó	3óXó0ó*÷rF   r
   c                   ó   — e Zd ZdddœZy)ÚUvicornH11WorkerrU   Úh11r   N)rj   rk   rl   r   r)   rF   rE   rr   rr   h   s   „ Ø&°Ñ6�MrF   rr   )rU   r,   rM   r`   Útypingr   r   Úgunicorn.arbiterr   Úgunicorn.workers.baser   Úuvicorn.configr   Úuvicorn.mainr   r
   rr   r)   rF   rE   ú<module>ry      s;   ðÛ Û Û Û 
ß å $Ý (å !Ý ôW�Fô Wôt7�}õ 7rF   