modify:进程插件开发环境目录结构变更
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
"""
|
||||
混合模式(external 插件)端到端测试
|
||||
进程插件(external 模式)端到端测试
|
||||
|
||||
前置条件:
|
||||
1. 网关正常运行(uv run serve);example 插件配置为 external:
|
||||
config/workers/example/config.toml [workers] 节 load_mode = "external"
|
||||
2. 本脚本自己拉起/停止独立 worker 进程(uv run worker_serve --type example)
|
||||
1. 网关正常运行(uv run serve)
|
||||
2. demo 进程插件(workers/demo/,load_mode = "external")
|
||||
|
||||
验证:
|
||||
本脚本从 demo 插件项目根(= 打包 zip 根)拉起/停止独立 worker 进程
|
||||
(worker_serve --type demo),验证:
|
||||
1. worker 启动后 → HTTP 路由动态出现且跨进程 RPC 可调
|
||||
2. worker 优雅退出 → 路由动态摘除(404)
|
||||
3. worker 重启 → 路由恢复
|
||||
@@ -18,13 +18,17 @@ import urllib.request
|
||||
from pathlib import Path
|
||||
|
||||
GATEWAY_URL = "http://localhost:8000"
|
||||
TEST_URL = f"{GATEWAY_URL}/api/v1/calc/add?a=3&b=4"
|
||||
TEST_URL = f"{GATEWAY_URL}/api/v1/demo/hello?name=chongming"
|
||||
POLL_TIMEOUT = 30.0
|
||||
|
||||
# 优先使用 venv 控制台脚本(uv sync 后生成),不存在时退回 uv run
|
||||
_WORKER_CMD = [str(Path(sys.executable).parent / "worker_serve"), "--type", "example"]
|
||||
# 插件项目根(= 容器工作目录 = zip 根):worker 在项目根下读配置/import 代码
|
||||
REPO = Path(__file__).parent.parent
|
||||
PROJECT = REPO / "workers" / "demo"
|
||||
|
||||
# 优先使用仓库 venv 控制台脚本(避免在插件项目内新建 venv),否则退回 uv run --project
|
||||
_WORKER_CMD = [str(Path(sys.executable).parent / "worker_serve"), "--type", "demo"]
|
||||
if not Path(_WORKER_CMD[0]).exists():
|
||||
_WORKER_CMD = ["uv", "run", "worker_serve", "--type", "example"]
|
||||
_WORKER_CMD = ["uv", "run", "--project", str(REPO), "worker_serve", "--type", "demo"]
|
||||
|
||||
PASS = 0
|
||||
FAIL = 0
|
||||
@@ -63,9 +67,10 @@ def wait_http(target_status=200, timeout=POLL_TIMEOUT):
|
||||
|
||||
|
||||
def run():
|
||||
# 1. 拉起独立 worker 进程
|
||||
# 1. 拉起独立 worker 进程(CWD = 插件项目根,与容器一致)
|
||||
proc = subprocess.Popen(
|
||||
_WORKER_CMD,
|
||||
cwd=str(PROJECT),
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True,
|
||||
@@ -83,6 +88,7 @@ def run():
|
||||
# 3. 重启 worker → 路由恢复
|
||||
proc2 = subprocess.Popen(
|
||||
_WORKER_CMD,
|
||||
cwd=str(PROJECT),
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True,
|
||||
@@ -103,5 +109,5 @@ def run():
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("提示: 请先以 load_mode=process 启动网关 (uv run serve)\n")
|
||||
print(f"提示: 请先启动网关 (uv run serve);worker 将从 {PROJECT} 拉起\n")
|
||||
sys.exit(run())
|
||||
|
||||
Reference in New Issue
Block a user