2727import httpx
2828
2929try :
30- from pydantic .v1 import BaseSettings
30+ from pydantic .v1 import BaseSettings , validator
3131except ImportError :
3232 from pydantic import BaseSettings
3333import shortuuid
@@ -106,6 +106,18 @@ class AppSettings(BaseSettings):
106106 controller_address : str = "http://localhost:21001"
107107 api_keys : Optional [List [str ]] = None
108108
109+ @validator ("api_keys" , pre = True )
110+ def split_api_keys (cls , v ):
111+ if isinstance (v , str ):
112+ return v .split ("," ) if v else None
113+ return v
114+
115+ class Config :
116+ # 关闭默认 JSON 解析行为
117+ @classmethod
118+ def parse_env_var (cls , field_name : str , raw_val : str ):
119+ return raw_val # 返回原始字符串,不解析成 JSON
120+
109121
110122app_settings = AppSettings ()
111123from contextlib import asynccontextmanager
@@ -145,6 +157,7 @@ async def timing_tasks():
145157
146158@asynccontextmanager
147159async def lifespan (app : fastapi .FastAPI ):
160+ logger .info (f"app_settings: { app_settings } " )
148161 asyncio .create_task (timing_tasks ())
149162 yield
150163
@@ -1123,7 +1136,8 @@ def create_openai_api_server():
11231136 )
11241137 parser .add_argument (
11251138 "--api-keys" ,
1126- type = lambda s : s .split ("," ),
1139+ type = str ,
1140+ default = None ,
11271141 help = "Optional list of comma separated API keys" ,
11281142 )
11291143 parser .add_argument (
@@ -1142,8 +1156,9 @@ def create_openai_api_server():
11421156 allow_methods = args .allowed_methods ,
11431157 allow_headers = args .allowed_headers ,
11441158 )
1145- app_settings .controller_address = args .controller_address
1146- app_settings .api_keys = args .api_keys
1159+ os .environ ["controller_address" ] = args .controller_address
1160+ if args .api_keys :
1161+ os .environ ["api_keys" ] = args .api_keys
11471162
11481163 logger .info (f"args: { args } " )
11491164 return args
0 commit comments