
    g7                        S SK J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
  S SKJr  S SKJr  S SKJr  \R"                  " S\5         " S	 S
\5      r " S S\5      rg)    )annotationsN)Any)Arbiter)Worker)Config)ServerzThe `uvicorn.workers` module is deprecated. Please use `uvicorn-worker` package instead.
For more details, see https://github.com/Kludex/uvicorn-worker.c                     ^  \ rS rSr% SrSSS.rS\S'   S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 jrSS jrSrU =r$ )UvicornWorker   zj
A worker class for Gunicorn that interfaces with an ASGI consumer callable,
rather than a WSGI callable.
autoloophttpzdict[str, Any]CONFIG_KWARGSc           	       > [         TU ]  " U0 UD6  [        R                  " S5      nU R                  R
                  R                  Ul        UR                  U R                  R
                  R                  5        SUl	        [        R                  " S5      nU R                  R                  R                  Ul        UR                  U R                  R                  R                  5        SUl	        S S U R                  R                  U R                  U R                  U R                  U R                  R                   S.nU R                  R"                  (       Ga  U R                  R$                  R'                  S5      U R                  R$                  R'                  S5      U R                  R$                  R'                  S5      U R                  R$                  R'                  S5      U R                  R$                  R'                  S	5      U R                  R$                  R'                  S
5      U R                  R$                  R'                  S5      S.nUR)                  U5        U R                  R*                  S   R,                  (       a&  U R                  R*                  S   R,                  US'   UR)                  U R.                  5        [1        S0 UD6U l        g )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 )super__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)selfargskwargsloggerconfig_kwargs
ssl_kwargs	__class__s         H/home/matz/Project1/venv/lib/python3.13/site-packages/uvicorn/workers.pyr)   UvicornWorker.__init__   s   $)&)""?3((,,55**001 ""#34((--66++112  "&(("4"4"ll#33"&"3"3#'88#?#?
 88???#xx3377	B $ 4 4 8 8 D(,(<(<(@(@(L#xx3377F!%!5!5!9!9+!F $ 4 4 8 8 D#xx3377	BJ   ,88Y'--'+xx'8'8'C'I'IM)$T//0-}-    c                V   > U R                   R                  5         [        TU ]  5         g N)r=   setup_event_loopr(   init_process)r>   rD   s    rE   rK   UvicornWorker.init_processI   s    $$&rG   c                   U R                    H(  n[        R                  " U[        R                  5        M*     [        R                  " [        R                  U R                  5        [        R
                  " [        R                  S5        g )NF)SIGNALSsignalSIG_DFLSIGUSR1handle_usr1siginterrupt)r>   ss     rE   init_signalsUvicornWorker.init_signalsM   sR     AMM!V^^,  	fnnd&6&67FNNE2rG   c                    [         R                  " 5       nUR                  [        R                  U R
                  [        R                  S5        g)zInstall 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_handlerrO   SIGQUIThandle_exit)r>   r   s     rE   _install_sigquit_handler&UvicornWorker._install_sigquit_handlerX   s5     '')0@0@&..RVWrG   c                :  #    U R                   U R                  l        [        U R                  S9nU R	                  5         UR                  U R                  S9I S h  vN   UR                  (       d%  [        R                  " [        R                  5        g g  N;7f)Nr=   )sockets)wsgir=   r   r   r]   servera   startedsysexitr   WORKER_BOOT_ERROR)r>   servers     rE   _serveUvicornWorker._serveb   si     ))t{{+%%'ll4<<l000~~HHW../  	1s   ABB<Bc                J    [         R                  " U R                  5       5      $ rI   )rX   runri   r>   s    rE   rl   UvicornWorker.runj   s    {{4;;=))rG   c                ,   #    U R                  5         g 7frI   )notifyrm   s    rE   r   UvicornWorker.callback_notifym   s     s   r`   )r?   r   r@   r   returnNone)rr   rs   )__name__
__module____qualname____firstlineno____doc__r   __annotations__r)   rK   rU   r]   ri   rl   r   __static_attributes____classcell__)rD   s   @rE   r
   r
      sC    
 .4V$DM>D(.T	3X0* rG   r
   c                      \ rS rSrSSS.rSrg)UvicornH11Workerq   rX   h11r   r'   N)rt   ru   rv   rw   r   rz   r'   rG   rE   r}   r}   q   s    &6MrG   r}   )
__future__r   rX   r*   rO   re   warningstypingr   gunicorn.arbiterr   gunicorn.workers.baser   uvicorn.configr   uvicorn.serverr   warnDeprecationWarningr
   r}   r'   rG   rE   <module>r      sV    "    
   $ ( ! ! FWF Wt7} 7rG   