o
    ]~#g5                     @  s   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de G d	d
 d
eZG d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                      sv   e Zd ZU dZdddZded< d 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httpzdict[str, Any]CONFIG_KWARGSargsr   kwargsreturnNonec              	     s8  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)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__r'   t/var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/uvicorn/workers.pyr)      s>   



	zUvicornWorker.__init__c                   s   | j   t   d S N)r=   setup_event_loopr(   init_processr>   rB   r'   rD   rG   I   s   
zUvicornWorker.init_processc                 C  s<   | j D ]	}t|tj qttj| j ttjd d S )NF)SIGNALSsignalSIG_DFLSIGUSR1handle_usr1siginterrupt)r>   sr'   r'   rD   init_signalsM   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_handlerrJ   SIGQUIThandle_exit)r>   r   r'   r'   rD   _install_sigquit_handlerX   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)wsgir=   r   r   rV   serverW   startedsysexitr   WORKER_BOOT_ERROR)r>   serverr'   r'   rD   _serveb   s   
zUvicornWorker._servec                 C  s   t |  S rE   )rQ   runr_   rH   r'   r'   rD   r`   j   s   zUvicornWorker.runc                   s   |    d S rE   )notifyrH   r'   r'   rD   r   m   s   zUvicornWorker.callback_notify)r   r   r   r   r   r   )r   r   )__name__
__module____qualname____doc__r   __annotations__r)   rG   rP   rV   r_   r`   r   __classcell__r'   r'   rB   rD   r      s   
 *




r   c                   @  s   e Zd ZdddZdS )UvicornH11WorkerrQ   h11r
   N)rb   rc   rd   r   r'   r'   r'   rD   rh   q   s    rh   )
__future__r   rQ   r*   rJ   r[   warningstypingr   gunicorn.arbiterr   gunicorn.workers.baser   uvicorn.configr   uvicorn.mainr   warnDeprecationWarningr   rh   r'   r'   r'   rD   <module>   s"    Z