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

24 statements  

« prev     ^ index     » next       coverage.py v7.14.3, created at 2026-07-06 12:29 +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 

13 host: str = "127.0.0.1" 

14 port: int = 8000 

15 reload: bool = False 

16 workers: int = 1 

17 log_level: str = "info" 

18 env_file: str = ".env" 

19 

20 

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

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

23 

24 Args: 

25 config: ServeConfig 配置对象。 

26 """ 

27 cfg = config or ServeConfig() 

28 

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

30 from dotenv import load_dotenv 

31 

32 load_dotenv(cfg.env_file) 

33 

34 import uvicorn 

35 

36 uvicorn.run( 

37 "agentos.api.server:app", 

38 host=cfg.host, 

39 port=cfg.port, 

40 reload=cfg.reload, 

41 workers=cfg.workers, 

42 log_level=cfg.log_level, 

43 ) 

44 

45 

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

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

48 cfg = config or ServeConfig() 

49 import uvicorn 

50 

51 server_config = uvicorn.Config( 

52 "agentos.api.server:app", 

53 host=cfg.host, 

54 port=cfg.port, 

55 reload=cfg.reload, 

56 workers=cfg.workers, 

57 log_level=cfg.log_level, 

58 ) 

59 server = uvicorn.Server(server_config) 

60 await server.serve()