
    i!                        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  S SKJr  \R&                  " S	\5         " S
 S\5      r " S S\5      rg)    )annotationsN)Any)Arbiter)Worker)asyncio_run)Config)ServerzThe `uvicorn.workers` module is deprecated. Please use `uvicorn-worker` package instead.
For more details, see https://github.com/Kludex/uvicorn-worker.c                  x   ^  \ rS rSr% SrSSS.rS\S'   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         J/var/www/html/trading/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                   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     rF   init_signalsUvicornWorker.init_signalsJ   sR     AMM!V^^,  	fnnd&6&67FNNE2rH   c                    [         R                  " 5       nUR                  [        R                  U R
                  [        R                  S5        g)zInstall a SIGQUIT handler on workers.

- https://github.com/Kludex/uvicorn/issues/1116
- https://github.com/benoitc/gunicorn/issues/2604
N)asyncioget_running_loopadd_signal_handlerrK   SIGQUIThandle_exit)r?   r   s     rF   _install_sigquit_handler&UvicornWorker._install_sigquit_handlerU   s5     '')0@0@&..RVWrH   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	   rY   server]   startedsysexitr   WORKER_BOOT_ERROR)r?   servers     rF   _serveUvicornWorker._serve_   si     ))t{{+%%'ll4<<l000~~HHW../  	1s   ABB<Bc                b    [        U R                  5       U R                  R                  5       S9$ )N)loop_factory)r   re   r>   get_loop_factoryr?   s    rF   runUvicornWorker.rung   s"    4;;=t{{7S7S7UVVrH   c                ,   #    U R                  5         g 7f)N)notifyrj   s    rF   r   UvicornWorker.callback_notifyj   s     s   r\   )r@   r   rA   r   returnNone)rp   rq   )__name__
__module____qualname____firstlineno____doc__r   __annotations__r*   rQ   rY   re   rk   r   __static_attributes____classcell__)rE   s   @rF   r   r      s?    
 .4V$DM>D(.T	3X0W rH   r   c                      \ rS rSrSSS.rSrg)UvicornH11Workern   rT   h11r   r(   N)rr   rs   rt   ru   r   rx   r(   rH   rF   r{   r{   n   s    &6MrH   r{   )
__future__r   rT   r+   rK   ra   warningstypingr   gunicorn.arbiterr   gunicorn.workers.baser   uvicorn._compatr   uvicorn.configr   uvicorn.serverr	   warnDeprecationWarningr   r{   r(   rH   rF   <module>r      sY    "    
   $ ( ' ! ! FSF Sl7} 7rH   