
    l i!                        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 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)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                  b     e Zd ZU dZdddZded<   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         F/var/www/findabus/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                    | 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)rB   ss     rG   init_signalszUvicornWorker.init_signalsJ   s^      	- 	-AM!V^,,,,fnd&6777FNE22222rH   c                    t          j                    }|                    t          j        | j        t          j        d           dS )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)rB   r   s     rG   _install_sigquit_handlerz&UvicornWorker._install_sigquit_handlerU   s:     '))0@&.RVWWWWWrH   c                  K   | j         | j        _        t          | j                  }|                                  |                    | j                   d {V  |j        s t          j	        t          j                   d S d S )N)rA   )sockets)wsgirA   r   r	   rX   serverZ   startedsysexitr   WORKER_BOOT_ERROR)rB   servers     rG   _servezUvicornWorker._serve_   s      )t{+++%%'''ll4<l000000000~ 	0HW./////	0 	0rH   c                v    t          |                                 | j                                                  S )N)loop_factory)r   rb   rA   get_loop_factoryrB   s    rG   runzUvicornWorker.rung   s+    4;;==t{7S7S7U7UVVVVrH   c                2   K   |                                   d S )N)notifyrf   s    rG   r   zUvicornWorker.callback_notifyj   s      rH   )r   r   r   r   r   r   )r   r   )__name__
__module____qualname____doc__r   __annotations__r-   rQ   rX   rb   rg   r   __classcell__)rF   s   @rG   r   r      s          
 .4V$D$DMDDDD(. (. (. (. (. (.T	3 	3 	3 	3X X X X0 0 0 0W W W W       rH   r   c                      e Zd ZdddZdS )UvicornH11WorkerrS   h11r   N)rj   rk   rl   r   r+   rH   rG   rq   rq   n   s        &66MMMrH   rq   )
__future__r   rS   r.   rK   r^   warningstypingr   gunicorn.arbiterr   gunicorn.workers.baser   uvicorn._compatr   uvicorn.configr   uvicorn.serverr	   warnDeprecationWarningr   rq   r+   rH   rG   <module>r}      s6   " " " " " "    



        $ $ $ $ $ $ ( ( ( ( ( ( ' ' ' ' ' ' ! ! ! ! ! ! ! ! ! ! ! ! F  S S S S SF S S Sl7 7 7 7 7} 7 7 7 7 7rH   