推一个类似 FastAPI 的 WSGI API 框架: HintAPI, 有以下特性
例子
from hintapi import HintAPI
from hintapi.openapi import OpenAPI
app = HintAPI()
app.router << ("/docs" // OpenAPI().routes)
@app.router.http.patch("/{user_id}/name")
def update_name(
user_id: UUID = Path(),
name: str = Body(),
):
...
-- 初衷 --
我朋友觉得 FastAPI 修 Bug 的速度太慢了, 开发也不热情, 所以他自己实现了一套类似的 ASGI (Async) API 框架, Index.py
过了一两年到现在, Index.py 已经很稳定了, 但是 Python 的 Async 生态还是半死不活的, 加上数据库速度还没同步 + Gevent 快 😅. 所以他开发了 Index.py 的同步版本 HintAPI.
1
szxczyc 2021-11-09 03:56:12 +08:00 via iPhone
速度和 gin 比怎么样
|
2
lengyue233 OP @szxczyc Python 下的 API 框架, 应该没有和 Go 掰手腕的可能...
|
3
ericls 2021-11-09 06:15:32 +08:00 via iPhone
@szxczyc Python web 速度一般取决于服务器 而不是框架 框架都是对 wsgi 和 asgi 的包装
|
4
abersheeran 2021-11-09 09:25:07 +08:00 1
@szxczyc 实际业务里比不过 Gin ,但是应该可以比所有 ASGI 实现都快。毕竟 Gevent 等一众有栈协程的性能,远比现在半死不活的 asyncio 要好。举几个例子,aiomysql 是多线程改造的、motor 多线程改造的、aioredis 不支持集群实际用起来还得 redis 多线程改造。唯一好一点的就是 asyncpg ,但是不支持 DBAPI ,没有对应的 ORM 可用。
我现在是 ASGI 和 WSGI 混着用。普通业务用同步,生态齐全、性能不差。一些极端业务必须要用 asyncio 的,就上 ASGI 。 |
5
ospider 2021-11-09 09:30:59 +08:00
牛逼啊,FastAPI 到现在都没有 API 文档,太坑了
|
6
Fizzyi 2021-11-09 10:04:56 +08:00
惊现冷月大佬
|