modify: 进程插进目录结构更新
This commit is contained in:
+11
-11
@@ -18,7 +18,7 @@
|
||||
进程插件的特点:
|
||||
|
||||
- **零导入关系**:只依赖 `chongming-worker` SDK + zenoh,禁止 import `chongming`(网关包)
|
||||
- **独立生命周期**:由 Docker/K8s 编排拉起,进程入口 `worker_serve --type <name>`(或 `chongming-worker --type <name>`)
|
||||
- **独立生命周期**:由 Docker/K8s 编排拉起,进程入口 `chongming-worker --type <name>`(SDK console script)
|
||||
- **动态路由**:启动时把路由描述符发布到 Zenoh `chongming/routes/<type>/...`,网关 RouteRegistry 常驻订阅后动态挂载 HTTP 端点;退出时摘除
|
||||
- **独立打包**:`uv run build_plugin <name>` 一键打包为可部署 zip,与网关分别部署到不同容器
|
||||
- **代码结构一致**:与 inline 插件完全相同(Plugin 基类 + router/ + models/)
|
||||
@@ -44,7 +44,7 @@ graph TB
|
||||
end
|
||||
|
||||
subgraph PW[进程插件容器 workers/demo]
|
||||
WS[worker_serve 进程]
|
||||
WS[chongming-worker 进程]
|
||||
WS -->|① put 路由描述符<br/>chongming/routes/demo/**| REG
|
||||
WS -->|② liveliness 注册<br/>worker/demo/<id>| WM
|
||||
end
|
||||
@@ -57,7 +57,7 @@ graph TB
|
||||
### 2.2 Worker 进程启动流程(`chongming_worker.process.worker_serve`)
|
||||
|
||||
```text
|
||||
worker_serve --type demo
|
||||
chongming-worker --type demo
|
||||
1. 读全局 config.toml(仅 [zenoh] 节)→ 打开 Zenoh 会话
|
||||
2. 自读 config/workers/demo/config.toml 的 [workers] 节(load_plugin_config 展平)
|
||||
3. import 插件模块(plugins.<name> / workers.<name>)→ 触发 @rpc_method 注册
|
||||
@@ -111,7 +111,7 @@ workers/<name>/ # 项目根 = zip 根 = 容器工作目录
|
||||
│ └── <操作名>.toml # 每个端点一个定义文件
|
||||
├── config.toml # 最小根配置(仅 [zenoh] 节,worker 启动必需)
|
||||
├── pyproject.toml # uv 依赖清单(chongming-worker + 扩展依赖)
|
||||
└── start.sh # 容器入口(uv sync + uv run worker_serve --type <name>)
|
||||
└── start.sh # 容器入口(uv sync + uv run chongming-worker --type <name>)
|
||||
```
|
||||
|
||||
> 参考示例:`workers/demo/`(完整项目,含 5 个端点,配合 `test_worker_isolation.py` /
|
||||
@@ -162,7 +162,7 @@ cleanup = _plugin.cleanup
|
||||
```
|
||||
|
||||
> 注意:`module` 注册为 `workers.<name>` 时,`sys.path` 需包含项目根目录——
|
||||
> `worker_serve` 已自动处理(console script 启动时会显式把 CWD 加入 `sys.path`),
|
||||
> `chongming-worker` 已自动处理(console script 启动时会显式把 CWD 加入 `sys.path`),
|
||||
> 只需在项目根 `workers/<name>/` 下运行。
|
||||
|
||||
### 第 2 步:插件注册配置
|
||||
@@ -267,11 +267,11 @@ __all__ = ["hello"]
|
||||
```bash
|
||||
cd workers/demo
|
||||
uv sync # 首次:安装依赖(项目独立 venv,与容器一致)
|
||||
uv run worker_serve --type demo # 本地调试
|
||||
uv run worker_serve --type demo --count 1 # 覆盖副本数
|
||||
uv run chongming-worker --type demo # 本地调试
|
||||
uv run chongming-worker --type demo --count 1 # 覆盖副本数
|
||||
./start.sh # 与容器一致的启动方式
|
||||
# 开发期复用仓库 venv(已装好 SDK)时,用 --project 指向仓库根:
|
||||
uv run --project .. worker_serve --type demo
|
||||
uv run --project .. chongming-worker --type demo
|
||||
```
|
||||
|
||||
启动后预期日志:
|
||||
@@ -313,7 +313,7 @@ config/workers/<name>/ 插件注册 + 端点配置
|
||||
config/zenoh_config.json5 Zenoh 会话配置
|
||||
config.toml 最小根配置(仅 [zenoh] 节,worker 启动必需)
|
||||
pyproject.toml uv 依赖清单(chongming-worker 内网 git 源 + orjson + 扩展依赖)
|
||||
start.sh 容器入口:uv sync --no-dev + uv run worker_serve --type <name>
|
||||
start.sh 容器入口:uv sync --no-dev + uv run chongming-worker --type <name>
|
||||
```
|
||||
|
||||
打包前校验(任一不满足即失败退出):
|
||||
@@ -467,7 +467,7 @@ Worker 进程启动时自读 TOML 并**在自己进程内**做三方一致性校
|
||||
| `TypeError: rpc_method() got an unexpected keyword argument 'stream'` | venv 里是旧版 chongming-worker(git 源拉取),本地未 push 的框架改动不生效;联调时 `uv pip install -e utils/worker` |
|
||||
| 路由没出现 | worker 是否就绪(日志「路由发布完成」);网关 RouteRegistry 是否订阅(启动流程 5.1);每 10s 自愈重发布,稍等或重启 worker |
|
||||
| 路由一直 404 | worker 是否已退出(优雅退出会摘除路由);进程被 SIGKILL 时描述符残留,重启 worker 后重发布自愈覆盖 |
|
||||
| 找不到插件配置 | `worker_serve` 须在**插件项目根** `workers/<name>/` 下运行(读 `config/workers/<name>/config.toml`,`--config` 可指定全局配置路径) |
|
||||
| 找不到插件配置 | `chongming-worker` 须在**插件项目根** `workers/<name>/` 下运行(读 `config/workers/<name>/config.toml`,`--config` 可指定全局配置路径) |
|
||||
| storage.* 端点报「storage 未配置」 | 插件 config.toml 未配置 `[workers.config.storage]`(或 `enabled = false` / 连接失败降级)。补齐配置后重启 worker;启动日志可见「对象存储已就绪」或「storage 连接失败」告警 |
|
||||
| 容器内 import `workers.demo` 失败 | 确认在容器工作目录(zip 根)启动,`start.sh` 内含 `cd "$(dirname "$0")"`,worker_serve 会把 CWD 加入 sys.path |
|
||||
|
||||
@@ -478,7 +478,7 @@ Worker 进程启动时自读 TOML 并**在自己进程内**做三方一致性校
|
||||
```bash
|
||||
uv run gen_plugin <name> --process # 生成进程插件项目骨架
|
||||
cd workers/<name> # 以下均在插件项目根下执行
|
||||
uv run worker_serve --type <name> # 本地调试独立 Worker 进程
|
||||
uv run chongming-worker --type <name> # 本地调试独立 Worker 进程(项目根下)
|
||||
./start.sh # 与容器一致的启动方式(uv sync + 启动)
|
||||
cd .. && uv run build_plugin <name> # 进程插件打包 → dist/<name>.zip
|
||||
uv run gen_models workers/<name>/config/workers/<name> workers/<name>/workers/<name> # 生成模型
|
||||
|
||||
Reference in New Issue
Block a user