基于 ASGI 的 Python 异步 web 框架

2020-07-06 16:13:11 +08:00
 abersheeran

去年这个时候开始的想法,独立开发了一年,期间在公司的一些项目里也用上了。现在感觉可以见人了,欢迎大家来使用 & 喷我代码,也欢迎 ISSUE/PR 😀。

https://github.com/abersheeran/index.py

我开始开发 Index.py 的时候就一个目的——不想再去折腾路由。然后才逐渐增加功能。

功能和 FastAPI 高度重合,开发也几乎是同一时期……但我两肯定没抄对方的,我相信它的作者看不懂中文文档,我英文也挺菜的,FastAPI 没火之前我压根不知道还有人在弄类似的项目。

不过大型项目肯定我比它快,因为我寻找路由是 O(1),其他基于 starlette 的框架都是 O(n)。说实话,Python 社区的 web 框架,路由系统全部用的遍历,不知道咋想的。我以前一直以为大家都是前缀树……

总之😁希望大家有空来用用。

3673 次点击
所在节点    Python
39 条回复
viiii
2020-07-06 23:19:26 +08:00
已 star 支持,
说起 FastAPI,听说还不建议商用,没有成熟的 ORM 部分,不知道 LZ 这里是怎么搞的?

要是有个实战项目来学一下就更好了
ericls
2020-07-06 23:39:36 +08:00
@viiii ORM 一般可以用外部的
abersheeran
2020-07-06 23:57:57 +08:00
@viiii 我们的项目使用的是 Mongodb,所以用的 motor + index.py 。我这个框架本身不带 ORM 的。
mazhouliang
2020-07-07 09:32:49 +08:00
感觉名字真的很重要,楼主的这个名字有点像个练手项目
whoami9894
2020-07-07 10:01:06 +08:00
哈? Python Web 框架路由都是遍历吗?一直以为树形匹配是标配
abersheeran
2020-07-07 14:18:42 +08:00
@whoami9894 我之前也一直以为是前缀树。直到我真的看了源码
abersheeran
2020-07-07 14:20:21 +08:00
@mazhouliang 我觉得 starlette 这种名字更像练手……还有什么海象、龙卷风、独角兽啥的。
abersheeran
2020-07-07 14:22:58 +08:00
@ericls 谢谢啦。😁
llsquaer
2020-07-08 10:06:13 +08:00
先 star 看大神是怎么写框架的..
so1n
2020-07-08 11:49:38 +08:00
@viiii 一般不用 orm 哈哈哈哈哈哈哈哈哈哈哈 不过现在 asyncio 的 orm 有多个选择了 类 sqlalchemy 的是使用 databases+sqlalchemy,类 django 的是使用 tortoise-orm
abersheeran
2020-07-08 14:07:57 +08:00
@so1n databases 真的能用吗……我持怀疑态度。Tom 最近的工作重心在 drf 和 httpx 上,那些 starlette 周边他都不怎么维护了。tortoise-orm 倒是挺好用的,不过最近用 μmongo 多了些感悟,或许 ORM 不应该是 Django 那样。
so1n
2020-07-08 14:15:42 +08:00
@abersheeran mysql 目前用着没啥坑,他只提供一个语句执行,最大工作量都在 sqlalchemy 的生成 sql 语句
abersheeran
2020-07-08 14:21:13 +08:00
@so1n 原来如此。
yzk66880
2020-07-08 21:32:45 +08:00
@viiii encode/database,我实践过,用着还行,配合 sqlalchemy, 大致就是借助 sqlalchemy 生成一个 sql 指令扔给 database 去异步执行,自己写个类似 orm 的类就可。
abersheeran
2020-07-08 23:38:18 +08:00
@yzk66880 说实话,对 sqlalchemy 这种,一直觉得有些不好用。等我有空,找一个编译原理大佬一起来整一个我觉得更好的 ORM 。
so1n
2020-07-28 09:53:19 +08:00
可以问一下 文档是怎么生成的吗
abersheeran
2020-07-28 11:44:01 +08:00
@so1n 跟 fastapi 原理一样。
so1n
2020-07-28 11:48:56 +08:00
@abersheeran 我找不到关键词 我去仓库看看
ixuuux
2020-08-11 23:14:21 +08:00
@abersheeran 期待你的 orm

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

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

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

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

© 2021 V2EX