Coverage for agentos/cli/serve.py: 54%

24 statements  

« prev     ^ index     » next       coverage.py v7.14.3, created at 2026-07-06 10:59 +0800

1"""v0.80 — `agentos serve` API 服务器启动器。""" 

2 

3from __future__ import annotations 

4 

5import os 

6from dataclasses import dataclass 

7 

8 

9@dataclass 

10class ServeConfig: 

11 """API 服务配置。""" 

12 host: str = "127.0.0.1" 

13 port: int = 8000 

14 reload: bool = False 

15 workers: int = 1 

16 log_level: str = "info" 

17 env_file: str = ".env" 

18 

19 

20def start_api_server(config: ServeConfig | None = None) -> None: 

21 """启动 AgentOS API 服务器(FastAPI + Uvicorn)。 

22 

23 Args: 

24 config: ServeConfig 配置对象。 

25 """ 

26 cfg = config or ServeConfig() 

27 

28 if cfg.env_file and os.path.exists(cfg.env_file): 

29 from dotenv import load_dotenv 

30 load_dotenv(cfg.env_file) 

31 

32 import uvicorn 

33 uvicorn.run( 

34 "agentos.api.server:app", 

35 host=cfg.host, 

36 port=cfg.port, 

37 reload=cfg.reload, 

38 workers=cfg.workers, 

39 log_level=cfg.log_level, 

40 ) 

41 

42 

43async def start_api_server_async(config: ServeConfig | None = None) -> None: 

44 """异步启动 API 服务器。""" 

45 cfg = config or ServeConfig() 

46 import uvicorn 

47 server_config = uvicorn.Config( 

48 "agentos.api.server:app", 

49 host=cfg.host, 

50 port=cfg.port, 

51 reload=cfg.reload, 

52 workers=cfg.workers, 

53 log_level=cfg.log_level, 

54 ) 

55 server = uvicorn.Server(server_config) 

56 await server.serve()