
    9Cg5                        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dS )    )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_KWARGSargsr   kwargsreturnNonec           	         t                      j        |i | t          j        d          }| j        j        j        |_        |                    | j        j        j                   d|_	        t          j        d          }| j        j
        j        |_        |                    | j        j
        j                   d|_	        d d | j        j        | j        | j        | j        | j        j        d}| j        j        r| j        j                            d          | j        j                            d          | j        j                            d          | j        j                            d          | j        j                            d	          | j        j                            d
          | j        j                            d          d}|                    |           | j        j        d         j        r| j        j        d         j        |d<   |                    | j                   t1          di || _        d S )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)selfr   r   loggerconfig_kwargs
ssl_kwargs	__class__s         A/var/www/api/venv/lib/python3.11/site-packages/uvicorn/workers.pyr,   zUvicornWorker.__init__   s   $)&)))"?33(,5*0111 "#344(-6+1222  "&("4"l#3"&"3#'8#?
 
 8? 
	-#x377	BB $ 4 8 8 D D(,(<(@(@(L(L#x377FF!%!5!9!9+!F!F $ 4 8 8 D D#x377	BB J   ,,,8Y'- 	J'+x'8'C'IM)$T/000--}--    c                z    | j                                          t                                                       d S N)r@   setup_event_loopr+   init_process)rA   rE   s    rF   rK   zUvicornWorker.init_processI   s3    $$&&&rG   c                    | j         D ]!}t          j        |t          j                   "t          j        t          j        | j                   t          j        t          j        d           d S )NF)SIGNALSsignalSIG_DFLSIGUSR1handle_usr1siginterrupt)rA   ss     rF   init_signalszUvicornWorker.init_signalsM   s^      	- 	-AM!V^,,,,fnd&6777FNE22222rG   c                    t          j                    }|                    t          j        | j        t          j        d           dS )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_handlerrN   SIGQUIThandle_exit)rA   r   s     rF   _install_sigquit_handlerz&UvicornWorker._install_sigquit_handlerX   s:     '))0@&.RVWWWWWrG   c                  K   | j         | j        _        t          | j                  }|                                  |                    | j                   d {V  |j        s t          j	        t          j                   d S d S )N)r@   )sockets)wsgir@   r   r   r[   server]   startedsysexitr   WORKER_BOOT_ERROR)rA   servers     rF   _servezUvicornWorker._serveb   s      )t{+++%%'''ll4<l000000000~ 	0HW./////	0 	0rG   c                N    t          j        |                                           S rI   )rV   runre   rA   s    rF   rg   zUvicornWorker.runj   s    {4;;==)))rG   c                2   K   |                                   d S rI   )notifyrh   s    rF   r   zUvicornWorker.callback_notifym   s      rG   )r   r   r   r   r   r   )r   r   )__name__
__module____qualname____doc__r   __annotations__r,   rK   rT   r[   re   rg   r   __classcell__)rE   s   @rF   r
   r
      s          
 .4V$D$DMDDDD(. (. (. (. (. (.T     	3 	3 	3 	3X X X X0 0 0 0* * * *       rG   r
   c                      e Zd ZdddZdS )UvicornH11WorkerrV   h11r   N)rk   rl   rm   r   r*   rG   rF   rr   rr   q   s        &66MMMrG   rr   )
__future__r   rV   r-   rN   ra   warningstypingr   gunicorn.arbiterr   gunicorn.workers.baser   uvicorn.configr   uvicorn.mainr   warnDeprecationWarningr
   rr   r*   rG   rF   <module>r}      s$   " " " " " "    



        $ $ $ $ $ $ ( ( ( ( ( ( ! ! ! ! ! !       F  W W W W WF W W Wt7 7 7 7 7} 7 7 7 7 7rG   