Coverage for agentos/cli/serve.py: 56%
25 statements
« prev ^ index » next coverage.py v7.14.3, created at 2026-07-02 09:59 +0800
« prev ^ index » next coverage.py v7.14.3, created at 2026-07-02 09:59 +0800
1"""v0.80 — `agentos serve` API 服务器启动器。"""
3from __future__ import annotations
5import asyncio
6import os
7from dataclasses import dataclass, field
10@dataclass
11class ServeConfig:
12 """API 服务配置。"""
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"
21def start_api_server(config: ServeConfig | None = None) -> None:
22 """启动 AgentOS API 服务器(FastAPI + Uvicorn)。
24 Args:
25 config: ServeConfig 配置对象。
26 """
27 cfg = config or ServeConfig()
29 if cfg.env_file and os.path.exists(cfg.env_file):
30 from dotenv import load_dotenv
31 load_dotenv(cfg.env_file)
33 import uvicorn
34 uvicorn.run(
35 "agentos.api.server:app",
36 host=cfg.host,
37 port=cfg.port,
38 reload=cfg.reload,
39 workers=cfg.workers,
40 log_level=cfg.log_level,
41 )
44async def start_api_server_async(config: ServeConfig | None = None) -> None:
45 """异步启动 API 服务器。"""
46 cfg = config or ServeConfig()
47 import uvicorn
48 server_config = uvicorn.Config(
49 "agentos.api.server:app",
50 host=cfg.host,
51 port=cfg.port,
52 reload=cfg.reload,
53 workers=cfg.workers,
54 log_level=cfg.log_level,
55 )
56 server = uvicorn.Server(server_config)
57 await server.serve()