o
    "j                     @   s   d dl mZ d dlZd dlZd dl mZ d dlmZ G dd dejZ	G dd deZ
G dd	 d	Zed
krIe
dZe  d dlZed dS dS )    N)
HTTPServer)Processc                   @   s>   e Zd Zdd Zdd Zdd Zdd Zdd
dZdd ZdS )	KVHandlerc                 C   s   | j j@ i }| j j D ]\}}|| jr|jdd||< q|r/| dt	|
d n| d W d    d S W d    d S 1 sGw   Y  d S )Nzutf-8)encoding     )serverkv_lockkvitems
startswithpathdecodeoutputjsondumpsencode)selfretkv r   j/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/distributed/launch/utils/kv_server.pydo_GET   s   
"zKVHandler.do_GETc                 C   s   |    d S N)do_POSTr   r   r   r   do_PUT"   s   zKVHandler.do_PUTc                 C   s   t | jd pd}z,| j|}| jj || jj| j< | d 	 W d    W d S 1 s.w   Y  W d S    | d Y d S )NContent-Lengthr   r   i  )	intheadersrfilereadr   r	   r
   r   r   )r   content_lengthvaluer   r   r   r   %   s   

(zKVHandler.do_POSTc                 C   sn   | j j) | j| j jv r| j j| j= | d n| d W d    d S W d    d S 1 s0w   Y  d S )Nr   r   )r   r	   r   r
   r   r   r   r   r   	do_DELETE0   s   
"zKVHandler.do_DELETE c                 C   sF   |  | | dt| | dd |   |r!| j| d S d S )Nr   zContent-Typezapplication/json; charset=utf8)Zsend_responseZsend_headerlenZend_headerswfilewrite)r   coder$   r   r   r   r   8   s   
zKVHandler.outputc                 G   s   d S r   r   )r   formatargsr   r   r   log_message@   s   zKVHandler.log_messageN)r&   )	__name__
__module____qualname__r   r   r   r%   r   r-   r   r   r   r   r      s    
r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )KVServerc                    s<   t  d|ft t | _ddi| _|| _d| _d| _	d S )Nr&   z/healthys   okF)
super__init__r   	threadingLockr	   r
   portstoppedstartedr   r6   	__class__r   r   r3   E   s   


zKVServer.__init__c                 C   s$   t j| jd| _| j  d| _d S N)targetT)r4   Threadserve_foreverlisten_threadstartr8   r   r   r   r   rA   M   s   

zKVServer.startc                 C   s$   |    | j  |   d| _d S )NT)shutdownr@   joinserver_closer7   r   r   r   r   stopR   s   

zKVServer.stop)r.   r/   r0   r3   rA   rE   __classcell__r   r   r:   r   r1   D   s    r1   c                   @   s<   e Zd Zdd Zdd Zdd Zedd Zed	d
 ZdS )	PKVServerc                 C   s   t || _d S r   )r1   _serverr9   r   r   r   r3   Z   s   zPKVServer.__init__c                 C   s&   t | jjd| _d| j_| j  d S r<   )r   rH   rA   procdaemonr   r   r   r   rA   ]   s   zPKVServer.startc                 C   s   | j   | j  d S r   )rH   rE   rI   rC   r   r   r   r   rE   b   s   
zPKVServer.stopc                 C      | j jS r   )rH   r8   r   r   r   r   r8   f      zPKVServer.startedc                 C   rK   r   )rH   r7   r   r   r   r   r7   j   rL   zPKVServer.stoppedN)	r.   r/   r0   r3   rA   rE   propertyr8   r7   r   r   r   r   rG   Y   s    
rG   __main__i  iX  )Zhttp.serverr   SimpleHTTPServerr   r4   r   multiprocessingr   SimpleHTTPRequestHandlerr   r1   rG   r.   r
   rA   timesleepr   r   r   r   <module>   s   .