o
    96d[                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ G dd de
ZG d	d
 d
eZdS )    N)AnyDict)Arbiter)Worker)Config)Serverc                       s   e Zd ZU dZdddZeeef ed< dededdf fd	d
Z	d fddZ
dddZdddZdddZdddZdddZ  ZS )UvicornWorkerzv
    A worker class for Gunicorn that interfaces with an ASGI consumer callable,
    rather than a WSGI callable.
    autoloophttpCONFIG_KWARGSargskwargsreturnNc              	      s<  t t| j|i | td}| jjj|_|| jjj	 d|_
t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 tdi || _d S )Nzuvicorn.errorFzuvicorn.access)appZ
log_configZtimeout_keep_aliveZtimeout_notifycallback_notifyZlimit_max_requestsforwarded_allow_ipskeyfilecertfilepasswordssl_version	cert_reqsca_certsciphers)Zssl_keyfileZssl_certfileZssl_keyfile_passwordr   Zssl_cert_reqsZssl_ca_certsZssl_ciphersbacklog )superr   __init__logging	getLoggerlogZ	error_loghandlerssetLevellevel	propagateZ
access_logcfg	keepalivetimeoutr   Zmax_requestsr   Zis_sslZssl_optionsgetupdatesettingsvaluer   r   config)selfr   r   loggerZconfig_kwargsZ
ssl_kwargs	__class__r   fC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\uvicorn/workers.pyr      s>   



	zUvicornWorker.__init__c                    s   | j   tt|   d S N)r-   Zsetup_event_loopr   r   init_processr.   r0   r   r2   r4   @   s   
zUvicornWorker.init_processc                 C   s<   | j D ]	}t|tj qttj| j ttjd d S )NF)ZSIGNALSsignalSIG_DFLZSIGUSR1Zhandle_usr1Zsiginterrupt)r.   sr   r   r2   init_signalsD   s   
zUvicornWorker.init_signalsc                 C   s"   t  }|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_handlerr6   ZSIGQUITZhandle_exit)r.   r   r   r   r2   _install_sigquit_handlerO   s   z&UvicornWorker._install_sigquit_handlerc                    sN   | j | j_t| jd}|   |j| jdI d H  |js%t	t
j d S d S )N)r-   )sockets)Zwsgir-   r   r   r=   Zserver>   startedsysexitr   ZWORKER_BOOT_ERROR)r.   serverr   r   r2   _serveY   s   
zUvicornWorker._servec                 C   s   t |  S r3   )r:   runrC   r5   r   r   r2   rD   a   s   zUvicornWorker.runc                    s   |    d S r3   )notifyr5   r   r   r2   r   d   s   zUvicornWorker.callback_notify)r   N)__name__
__module____qualname____doc__r   r   strr   __annotations__r   r4   r9   r=   rC   rD   r   __classcell__r   r   r0   r2   r      s   
 *




r   c                   @   s   e Zd ZdddZdS )UvicornH11Workerr:   Zh11r
   N)rF   rG   rH   r   r   r   r   r2   rM   h   s    rM   )r:   r   r6   r@   typingr   r   Zgunicorn.arbiterr   Zgunicorn.workers.baser   Zuvicorn.configr   Zuvicorn.mainr   r   rM   r   r   r   r2   <module>   s    Z