1
1
import abc
2
2
import enum
3
+ import io
3
4
import json
4
5
import re
5
6
import resource
7
+ import wave
6
8
7
- from fastapi .requests import Request
8
9
import requests
10
+ from fastapi .requests import Request
9
11
from starlette .datastructures import MutableHeaders
10
- import io
11
- import wave
12
12
13
13
from vllm_router .log import init_logger
14
14
26
26
27
27
# retrieves the generated wav bytes, return
28
28
_SILENT_WAV_BYTES = wav_buffer .getvalue ()
29
- logger .debug ("======A default silent WAV file has been stored in memory within py application process====" )
29
+ logger .debug (
30
+ "======A default silent WAV file has been stored in memory within py application process===="
31
+ )
30
32
31
33
32
34
class SingletonMeta (type ):
@@ -95,12 +97,11 @@ def get_test_payload(model_type: str):
95
97
case ModelType .transcription :
96
98
# Generate a 0.1 second silent audio file
97
99
if _SILENT_WAV_BYTES is not None :
98
- logger .debug ("=====Slient WAV Bytes is being used=====" )
100
+ logger .debug ("=====Silent WAV Bytes is being used=====" )
99
101
return {
100
102
"file" : ("empty.wav" , _SILENT_WAV_BYTES , "audio/wav" ),
101
103
}
102
104
103
-
104
105
@staticmethod
105
106
def get_all_fields ():
106
107
return [model_type .name for model_type in ModelType ]
@@ -184,27 +185,25 @@ def update_content_length(request: Request, request_body: str):
184
185
185
186
def is_model_healthy (url : str , model : str , model_type : str ) -> bool :
186
187
model_details = ModelType [model_type ]
187
-
188
+
188
189
try :
189
190
if model_type == "transcription" :
190
191
191
192
# for transcription, the backend expects multipart/form-data with a file
192
193
# we will use pre-generated silent wav bytes
193
- files = {
194
- "file" : ("empty.wav" , _SILENT_WAV_BYTES , "audio/wav" )
195
- }
196
- data = {"model" :model }
194
+ files = {"file" : ("empty.wav" , _SILENT_WAV_BYTES , "audio/wav" )}
195
+ data = {"model" : model }
197
196
response = requests .post (
198
197
f"{ url } { model_details .value } " ,
199
198
files = files , # multipart/form-data
200
- data = data
199
+ data = data ,
201
200
)
202
201
else :
203
202
# for other model types (chat, completion, etc.)
204
203
response = requests .post (
205
204
f"{ url } { model_details .value } " ,
206
205
headers = {"Content-Type" : "application/json" },
207
- json = {"model" :model } | model_details .get_test_payload (model_type )
206
+ json = {"model" : model } | model_details .get_test_payload (model_type ),
208
207
)
209
208
210
209
response .raise_for_status ()
@@ -219,5 +218,7 @@ def is_model_healthy(url: str, model: str, model_type: str) -> bool:
219
218
return False
220
219
221
220
except json .JSONDecodeError as e :
222
- logger .error (f"Failed to decode JSON from { model_type } model { model } at { url } : { e } " )
221
+ logger .error (
222
+ f"Failed to decode JSON from { model_type } model { model } at { url } : { e } "
223
+ )
223
224
return False
0 commit comments