o
    -i                     @   sZ   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 dZ
dS )    N)TracebackType)Selfc                       s   e Zd Zdee dee deddf fddZdefdd	Zd
e	e
 dB de
dB dedB ddfddZdd Zdd Zdee fddZd!ddZdefddZdefddZdeddfddZd!dd Z  ZS )"ServerProcess
server_cmdafter_bench_cmdshow_stdoutreturnNc                   s    t    || _|| _|| _d S N)super__init__r   r   r   )selfr   r   r   	__class__ Y/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/benchmarks/sweep/server.pyr      s   

zServerProcess.__init__c                 C   s   |    | S r	   )startr   r   r   r   	__enter__   s   zServerProcess.__enter__exc_type	exc_valueexc_tracebackc                 C   s   |    d S r	   )stop)r   r   r   r   r   r   r   __exit__    s   zServerProcess.__exit__c                 C   s0   t j| jd| jr
d nt jtjddiB d| _d S )NTVLLM_SERVER_DEV_MODE1)start_new_sessionstdoutenv)
subprocessPopenr   r   DEVNULLosenviron_server_processr   r   r   r   r   (   s   zServerProcess.startc                 C   s\   | j }| d u r,tt tt|jt	j
 W d    d S 1 s%w   Y  d S d S r	   )r#   poll
contextlibsuppressProcessLookupErrorr!   killpggetpgidpidsignalSIGKILL)r   server_processr   r   r   r   2   s   "zServerProcess.stopcmdc                 C   s"   t j|| jrd ddS t jddS )NT)r   check)r   runr   r    )r   r.   r   r   r   run_subcommand;   s   zServerProcess.run_subcommandc                 C   s"   | j s	|   d S | | j  d S r	   )r   reset_cachesr1   r   r   r   r   after_benchB   s   zServerProcess.after_benchc                 C   sr   | j }dD ]}||v r|||d  } nqd}dD ]}||v r.t|||d  } nqd}d| d| S )N)z--host   	localhost)z-pz--porti@  zhttp://:)r   indexint)r   r   host_keyhostport_keyportr   r   r   _get_vllm_server_addressI   s   z&ServerProcess._get_vllm_server_addressc                 C   s<   |   }zt| d}|jdkW S  tjy   Y dS w )Nz/health   F)r=   requestsgetstatus_codeRequestException)r   server_addressresponser   r   r   is_server_ready\   s   zServerProcess.is_server_readytimeoutc                 C   sn   t  }|  s5| j d ur| jj}td| t  | |kr*td| dt d |  rd S d S )Nz(Server process crashed with return code z%Server failed to become ready within z	 seconds.r4   )	time	monotonicrE   r#   r$   
returncodeRuntimeErrorTimeoutErrorsleep)r   rF   
start_timerI   r   r   r   wait_until_readyd   s   

zServerProcess.wait_until_readyc                 C   s   | j }|d dr/|  }td|  t| d}|  t| 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   endswithr=   printr?   postraise_for_statusNotImplementedError)r   r   rC   resr   r   r   r2   s   s"   zServerProcess.reset_caches)r   N)__name__
__module____qualname__liststrboolr   r   r   typeBaseExceptionr   r   r   r   r1   r3   r=   rE   r8   rN   r2   __classcell__r   r   r   r   r      s8    


	
r   )r%   r!   r+   r   rG   typesr   r?   typing_extensionsr   r   r   r   r   r   <module>   s   