You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
测试与部署方案
本轮开发验证不依赖 Docker,不依赖真实数据库。 真实 MySQL/PostgreSQL 和 Docker Compose 属于集成验证阶段。
本地轻量验证
cd <workspace>/iTi-Flask
uv run pytest -q
cd <workspace>/iTi-System
uv run pytest -q
cd <workspace>/my-business-app
uv run pytest -q
这些测试允许使用 SQLite 内存库,只验证框架行为、路由契约和模块组装。
MySQL 集成验证
准备独立测试库:
CREATE DATABASE iti_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE my_business_app_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
执行:
DATABASE_URL=mysql+pymysql://root:password@127.0.0.1:3306/iti_test?charset=utf8mb4
把连接串写入业务项目 .env.local 后执行:
iticli init system
iticli run dev
PostgreSQL 集成验证
准备独立测试库:
CREATE DATABASE iti_test;
CREATE DATABASE my_business_app_test;
执行:
DATABASE_URL=postgresql+psycopg://postgres:password@127.0.0.1:5432/iti_test
把连接串写入业务项目 .env.local 后执行:
iticli migrate
iticli run dev
验证:
curl http://127.0.0.1:8000/health
curl http://127.0.0.1:8000/ready
如启用 ready_check_db=True,/ready 会执行 SELECT 1。
Docker Compose 健康检查
模板生成项目已经包含 Docker Compose:
iticli docker up
iticli docker logs
iticli docker down
iticli docker ... 会在 .env 不存在时从 .env.example 创建。
如需本地数据库:
iticli docker up --db
iticli docker down --db
服务容器使用:
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8000/health"]
interval: 10s
timeout: 3s
retries: 3
依赖数据库就绪的服务可检查 /ready。
生产运行
简单部署:
uv run uvicorn main:app --host 0.0.0.0 --port 8000
多 worker:
uv run gunicorn main:app -k uvicorn.workers.UvicornWorker -w 4 -b 0.0.0.0:8000
tasks_enabled=True 时不要在多个 worker 同时启用调度。
轻量任务只保证单进程内正常运行。