Python API 框架, 内置文档生成, 参数检验

2021-11-09 03:23:51 +08:00
 lengyue233

推一个类似 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.

2222 次点击
所在节点    Python
6 条回复
szxczyc
2021-11-09 03:56:12 +08:00
速度和 gin 比怎么样
lengyue233
2021-11-09 04:48:47 +08:00
@szxczyc Python 下的 API 框架, 应该没有和 Go 掰手腕的可能...
ericls
2021-11-09 06:15:32 +08:00
@szxczyc Python web 速度一般取决于服务器 而不是框架 框架都是对 wsgi 和 asgi 的包装
abersheeran
2021-11-09 09:25:07 +08:00
@szxczyc 实际业务里比不过 Gin ,但是应该可以比所有 ASGI 实现都快。毕竟 Gevent 等一众有栈协程的性能,远比现在半死不活的 asyncio 要好。举几个例子,aiomysql 是多线程改造的、motor 多线程改造的、aioredis 不支持集群实际用起来还得 redis 多线程改造。唯一好一点的就是 asyncpg ,但是不支持 DBAPI ,没有对应的 ORM 可用。

我现在是 ASGI 和 WSGI 混着用。普通业务用同步,生态齐全、性能不差。一些极端业务必须要用 asyncio 的,就上 ASGI 。
ospider
2021-11-09 09:30:59 +08:00
牛逼啊,FastAPI 到现在都没有 API 文档,太坑了
Fizzyi
2021-11-09 10:04:56 +08:00
惊现冷月大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/814017

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX