
    Αip                         S r SSKJr  SSKrSSKrSSKJr  / rS r\" \	\R                  SS9r " S S\R                  5      r " S	 S
\5      r " S S5      rg)zHttp Server.    N)
HTTPServerc                     [         R                  " U 5      nUR                  U5        [         R                  " SSS9n[         R                  " US9nUR                  U5        UR                  U5        SUl        U$ )Nzhttp.logw)modefmtF)logging	getLoggersetLevelFileHandler	FormattersetFormatter
addHandler	propagate)namelevelr   loggerhandler	formatters         j/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/fleet/utils/http_server.py
get_loggerr      si    t$F
OOE!!*37G!!c*I#
gFM    z&%(asctime)s-%(levelname)s: %(message)sr   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
	KVHandler(   zR
kv handler class for kv http server,
it defines the way to get/set kv in server.
c                    SU R                  5       -   U R                  -   nU R                  R                  S5      n[        U5      S:  a*  [	        SU R                  -   5        U R                  S5        gUu  p4nU R                  R                     U R                  R                  R                  U0 5      R                  U5      nSSS5        Wc  USU-   -  nU R                  S5        OhUS	U-   -  nU R                  S
5        U R                  S[        [        U5      5      5        U R                  5         U R                  R                  U5        [         R#                  U5        g! , (       d  f       N= f)z8
get method for kv handler, get value according to key.
zGET /   len of request path must be 3:   Nz , key not found:   z , key found:    Content-Length)address_stringpathsplitlenprintsend_status_codeserverkv_lockkvgetsend_responsesend_headerstrend_headerswfilewrite_http_server_loggerinfo)selflog_strpaths_scopekeyvalues          r   do_GETKVHandler.do_GET.   s/    4..00499<		$u:>3dii?@!!#&#[[  KKNN&&ub155c:E !=+c11G!!#&'#--Gs#-s3u:?JJU#  ) ! s   6E))
E7c                    SU R                  5       -   U R                  -   nU R                  R                  S5      n[        U5      S:  a*  [	        SU R                  -   5        U R                  S5        gUu  p4n[        U R                  S   5      n U R                  R                  U5      nU R                  R                     U R                  R                  R                  U5      c  0 U R                  R                  U'   XpR                  R                  U   U'   SSS5        U R                  S
5        [        R                  U5        g!   [	        S5        U R                  S	5         g= f! , (       d  f       NX= f)z8
put method for kv handler, set value according to key.
zPUT r   r   r   r    Nr#   zreceive error invalid requestr!   r"   )r$   r%   r&   r'   r(   r)   intheadersrfilereadr*   r+   r,   r-   r4   r5   )r6   r7   r8   r9   r:   r;   content_lengthr<   s           r   do_PUTKVHandler.do_PUTF   s.    4..00499<		$u:>3dii?@!!#&#T\\*:;<	JJOON3E
 [[  {{~~!!%(0(*u%).KKNN5!#& ! 	c"  )	12!!#&  s   E AE1E.1
E?c                    SU R                  5       -   U R                  -   nU R                  R                  S5      n[        U5      S:  a*  [	        SU R                  -   5        U R                  S5        gUu  p4nU R                  R                     U R                  R                  R                  U5      c!  [        5       U R                  R                  U'   U R                  R                  U   R                  U5        SSS5        U R                  S5        [        R                  U5        g! , (       d  f       N5= f)z;
delete method for kv handler, set value according to key.
zDELETE r   r   r   r    Nr"   )r$   r%   r&   r'   r(   r)   r*   delete_kv_lock	delete_kvr-   setaddr4   r5   )r6   r7   r8   r9   r:   r;   s         r   	do_DELETEKVHandler.do_DELETE_   s     d1133dii?		$u:>3dii?@!!#&#[[''{{$$((/7/2u%%e,KK!!%(,,S1 ( 	c"  ) ('s   A0D//
D=c                     g)z,
ignore all logging messages in kv handler.
N )r6   formatargss      r   log_messageKVHandler.log_messageq   s     	r   c                 j    U R                  U5        U R                  SS5        U R                  5         g)z"
send status code back to client.
r#   r   N)r.   r/   r1   )r6   codes     r   r)   KVHandler.send_status_codew   s/     	4 )1-r   rO   N)__name__
__module____qualname____firstlineno____doc__r=   rE   rL   rR   r)   __static_attributes__rO   r   r   r   r   (   s     
*0*2*$r   r   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )KVHTTPServer   z'
it is a http server storing kv pairs.
c                    > [         TU ]  SU4U5        [        R                  " 5       U l        0 U l        [        R                  " 5       U l        0 U l        g)Init. N)super__init__	threadingLockrH   rI   r+   r,   )r6   portr   	__class__s      r   rd   KVHTTPServer.__init__   sA    "dW-'nn. ~~'r   c                     SnU R                      [        U R                  R                  U[	        5       5      5      nSSS5        U$ ! , (       d  f       U$ = f)z
get deleted size in key.
r   N)rH   r'   rI   r-   rJ   )r6   r;   rets      r   get_deleted_sizeKVHTTPServer.get_deleted_size   sG       dnn((ce45C !
 ! 
s   .A
A)rI   rH   r,   r+   )	rW   rX   rY   rZ   r[   rd   rl   r\   __classcell__)rh   s   @r   r^   r^      s     r   r^   c                   6    \ rS rSrSr0 4S jrS rS rS rSr	g)	KVServer   z<
it is a server storing kv pairs, has a http server inside.
c                 H    [        U[        5      U l        SU l        X l        g)ra   N)r^   r   http_serverlisten_threadsize)r6   rg   ru   s      r   rd   KVServer.__init__   s    'i8!	r   c                 t   ^  [         R                  " U 4S jS9T l        T R                  R                  5         g)z4
start server until user calls stop to let it quit.
c                  8   > T R                   R                  5       $ )N)rs   serve_foreverr6   s   r   <lambda> KVServer.start.<locals>.<lambda>   s    4++99;r   )targetN)re   Threadrt   startrz   s   `r   r   KVServer.start   s/     '--;
 	  "r   c                     U R                   R                  5         U R                  R                  5         U R                   R	                  5         g)z&
stop server and clear its resources.
N)rs   shutdownrt   joinserver_closerz   s    r   stopKVServer.stop   s:     	!!#!%%'r   c                     U R                    H?  nU R                  R                  U5      nX R                   R                  US5      :w  d  M?    g   g)z`
return whether the server should stop.

Returns:
    ret(bool): whether the server should stop
r   FT)ru   rs   rl   r-   )r6   r;   ss      r   should_stopKVServer.should_stop   sE     99C  11#6AIIMM#q))  r   )rs   rt   ru   N)
rW   rX   rY   rZ   r[   rd   r   r   r   r\   rO   r   r   rp   rp      s      #% #(r   rp   )r[   http.serverr*   SimpleHTTPServerr	   re   r   __all__r   rW   INFOr4   SimpleHTTPRequestHandlerr   r^   rp   rO   r   r   <module>r      se     &   "
 !gll H 
U 99 Up: .' 'r   