
    ,h7                        d dl m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
 d dlmZ d dlmZ d dlmZ  ej"                  de        G d	 d
e      Z G d de      Zy)    )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                  n     e Zd ZU dZdddZded<   d 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httpzdict[str, Any]CONFIG_KWARGSc           	        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)                  | j.                         t1        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 )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         Q/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/uvicorn/workers.pyr(   z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    | j                   j                          t        |           y N)r<   setup_event_loopr'   init_process)r=   rC   s    rD   rI   zUvicornWorker.init_processI   s    $$&rE   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     rD   init_signalszUvicornWorker.init_signalsM   sW      	-AMM!V^^,	- 	fnnd&6&67FNNE2rE   c                    t        j                         }|j                  t        j                  | j
                  t        j                  d       y)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_handlerrL   SIGQUIThandle_exit)r=   r   s     rD   _install_sigquit_handlerz&UvicornWorker._install_sigquit_handlerX   s5     '')0@0@&..RVWrE   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   rY   server[   startedsysexitr   WORKER_BOOT_ERROR)r=   servers     rD   _servezUvicornWorker._serveb   sj     ))t{{+%%'ll4<<l000~~HHW../  	1s   A!B#B$6Bc                H    t        j                  | j                               S rG   )rT   runrc   r=   s    rD   re   zUvicornWorker.runj   s    {{4;;=))rE   c                ,   K   | j                          y wrG   )notifyrf   s    rD   r   zUvicornWorker.callback_notifym   s     s   )r>   r   r?   r   returnNone)ri   rj   )__name__
__module____qualname____doc__r   __annotations__r(   rI   rR   rY   rc   re   r   __classcell__)rC   s   @rD   r
   r
      s>    
 .4V$DM>D(.T	3X0*rE   r
   c                      e Zd ZdddZy)UvicornH11WorkerrT   h11r   N)rk   rl   rm   r   r&   rE   rD   rr   rr   q   s    &6MrE   rr   )
__future__r   rT   r)   rL   r_   warningstypingr   gunicorn.arbiterr   gunicorn.workers.baser   uvicorn.configr   uvicorn.serverr   warnDeprecationWarningr
   rr   r&   rE   rD   <module>r}      sX    "    
   $ ( ! ! FWF Wt7} 7rE   