# 本地 Python 后端检查与运行

这是与网站服务端使用同一套安全检查、受限 Python 解释器和 `backend_sdk` 的本地工具。它只监听 `127.0.0.1`，使用本地数据库，不需要账号，不请求云端 API，也不会改变云端代码或数据库。

需要 Python 3.11+。下载并解压 `local-runner.zip`，在解压目录运行：

```powershell
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe local_runner.py check examples/backend.py
.venv\Scripts\python.exe local_runner.py serve examples/backend.py --database local.sqlite --port 8787
```

Linux/macOS 使用 `.venv/bin/python`。浏览器打开 <http://127.0.0.1:8787/> 可以测试示例 REST 和 WebSocket。REST 地址 `/api/hello`、`/api/notes`，WebSocket 地址 `/ws`。Ctrl+C 停止服务，数据库保留；修改代码后重启本地服务加载修改。

`check` 仅检查安全规则、语法、路由/事件定义，返回 JSON 报告；成功退出码 0，失败退出码 1。`serve` 在独立进程中执行通过检查的代码，并应用内存、QPS、SQLite 和超时限制。

可以调整本地配额，例如：

```powershell
python local_runner.py serve my_backend.py --database test.sqlite --database-limit-mb 10 --qps 100 --memory-mb 128 --timeout 2
```

代码规范见 `backend-guide.md`。当前支持该规范列出的 Python 语法与 SDK，不支持随意导入 Python 包。默认 10 MiB 数据库、100 QPS、128 MiB 进程内存、2 秒处理时间。SQLite 中的数据只在此本地文件中保存，需要把数据带到云端时，在网站数据库管理页面显式导入这个 SQLite 文件。

网站项目 REST 使用 `/用户ID/网站名/api/` 前缀；本地使用 `/api/`。业务函数与 SDK 无需改写。部署前仍应测试网页的相对资源路径和业务身份验证。
