
    -`i                     h    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Zd dlm	Z	  G d d          Z
dS )    N)TracebackType)Selfc                        e Zd Zdee         dee         deddf fdZdefdZde	e
         dz  d	e
dz  d
edz  ddfdZd Zd Zdee         fdZddZdefdZdefdZdeddfdZddZ xZS )ServerProcess
server_cmdafter_bench_cmdshow_stdoutreturnNc                r    t                                                       || _        || _        || _        d S N)super__init__r   r   r	   )selfr   r   r	   	__class__s       p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/benchmarks/sweep/server.pyr   zServerProcess.__init__   s8     	$.&    c                 .    |                                   | S r   )startr   s    r   	__enter__zServerProcess.__enter__   s    

r   exc_type	exc_valueexc_tracebackc                 .    |                                   d S r   )stop)r   r   r   r   s       r   __exit__zServerProcess.__exit__    s     			r   c                     t          j        | j        d| j        rd nt           j        t
          j        ddiz            | _        d S )NTVLLM_SERVER_DEV_MODE1)start_new_sessionstdoutenv)
subprocessPopenr   r	   DEVNULLosenviron_server_processr   s    r   r   zServerProcess.start(   sL    )/O"+C441C
4c:: 
  
  
r   c                    | j         }|                                jt          j        t                    5  t          j        t          j        |j                  t          j
                   d d d            d S # 1 swxY w Y   d S d S r   )r(   poll
contextlibsuppressProcessLookupErrorr&   killpggetpgidpidsignalSIGKILL)r   server_processs     r   r   zServerProcess.stop2   s    -  ($%788 J J	"*^%788&.IIIJ J J J J J J J J J J J J J J J J J )(s   7A99A= A=cmdc                 V    t          j        || j        rd nt           j        d          S )NT)r!   check)r#   runr	   r%   )r   r4   s     r   run_subcommandzServerProcess.run_subcommand;   s3    ~+C441C
 
 
 	
r   c                 t    | j         s|                                  d S |                     | j                    d S r   )r   reset_cachesr8   r   s    r   after_benchzServerProcess.after_benchB   sA    # 	FD011111r   c                     | j         }dD ]&}||v r ||                    |          dz            } n'd}dD ]3}||v r-t          ||                    |          dz                      } n4d}d| d| S )N)z--host   	localhost)z-pz--porti@  zhttp://:)r   indexint)r   r   host_keyhostport_keyports         r   _get_vllm_server_addressz&ServerProcess._get_vllm_server_addressI   s    _
# 	 	H:%%!*"2"28"<"<q"@A & D( 	 	H:%%:j&6&6x&@&@1&DEFF & D&&&&&&r   c                     |                                  }	 t          j        | d          }|j        dk    S # t          j        $ r Y dS w xY w)Nz/health   F)rF   requestsgetstatus_codeRequestException)r   server_addressresponses      r   is_server_readyzServerProcess.is_server_ready\   sc    6688	|~$>$>$>??H'3..( 	 	 	55	s   !8 A
Atimeoutc                 p   t          j                    }|                                 s| j                                        | j        j        }t          d|           t          j                    |z
  |k    rt          d| d          t          j        d           |                                 d S d S )Nz(Server process crashed with return code z%Server failed to become ready within z	 seconds.r=   )	time	monotonicrO   r(   r*   
returncodeRuntimeErrorTimeoutErrorsleep)r   rP   
start_timerT   s       r   wait_until_readyzServerProcess.wait_until_readyd   s    ^%%
&&(( 	#((**6!1<
"KzKK   ~*,w66"NGNNN   JqMMM &&(( 	 	 	 	 	r   c                    | j         }|d                             d          r~|                                 }t          d|            t	          j        | d          }|                                 t	          j        | d          }|                                 d S |d                             d          rd|v rt          d          d S t          d	|d          d
          )Nr   vllmzResetting caches at z/reset_prefix_cachez/reset_mm_cacheinfinity_embz--vector-disk-cachezLInfinity server uses caching but does not expose a method to reset the cachez)No implementation of `reset_caches` for `zB` server. Please specify a custom command via `--after-bench-cmd`.)r   endswithrF   printrI   postraise_for_statusNotImplementedError)r   r   rM   ress       r   r:   zServerProcess.reset_cachess   s   _
 a=!!&)) 	!::<<N999:::-> F F FGGC  """-> B B BCCC  """""]##N33 
	$
22))   32 &KJqM K K K  r   )r
   N)__name__
__module____qualname__liststrboolr   r   r   typeBaseExceptionr   r   r   r   r8   r;   rF   rO   rA   rY   r:   __classcell__)r   s   @r   r   r      s       'I' c'
 ' 
' ' ' ' ' '4    }%, !4' %t+	
 
   
 
 
J J J
$s) 
 
 
 
2 2 2 2'# ' ' ' '&                r   r   )r+   r&   r1   r#   rR   typesr   rI   typing_extensionsr   r    r   r   <module>ro      s        				              " " " " " "| | | | | | | | | |r   