Archived
异步基础层(core/):
- db.py aiosqlite + WAL:读路径无锁并发、写路径 asyncio.Lock 串行,
busy_timeout 自旋——实现「读写同时进行」(旧实现用 RLock 全读串行)
- http_client.py aiohttp 连接池 + 有界重试(5xx 重试 / 4xx 不重试)+
响应体上限 + 流式接口;按事件循环隔离 session(支持迁移期双 loop)
工具链:
- pyproject.toml ruff(E/F/W/I/B/UP/C4/ASYNC/S/RUF) + pyright(basic) + pytest(asyncio auto)
- requirements-fastapi.txt FastAPI/aiohttp/aiosqlite/aiofiles 等目标栈
- requirements-dev.txt 开发依赖(pytest/ruff/pyright)
清理:删除无用脚本 _csscheck.py 与产物标记 _css_ok.txt/_pkg_ok.txt,同步 .gitignore
验证:pytest 10/10(含「写 200 条同时 4 读协程零异常」并发用例);
ruff All checks passed;pyright 0 errors。
15 lines
537 B
Plaintext
15 lines
537 B
Plaintext
# 生产运行时依赖(FastAPI 版)
|
||
# 口径同旧 requirements.txt:加版本上界,防上游大版本静默破坏(第 95 条 P2-6)。
|
||
#
|
||
# 迁移说明:本文件是 FASTAPI 目标栈。当前仓库同时保留 requirements.txt(Flask 旧栈)
|
||
# 直到路由全部迁移完成、生产服务器切换为止,两者可并存。
|
||
fastapi>=0.115,<1.0
|
||
uvicorn[standard]>=0.30,<1.0
|
||
aiohttp>=3.10,<4.0
|
||
aiosqlite>=0.20,<1.0
|
||
aiofiles>=24.1
|
||
itsdangerous>=2.2,<3.0
|
||
cryptography>=50.0,<51.0
|
||
qrcode>=7.0,<8.3
|
||
python-multipart>=0.0.9
|