基于 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 框架,路由系统全部用的遍历,不知道咋想的。我以前一直以为大家都是前缀树……

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

3658 次点击
所在节点    Python
39 条回复
janxin
2020-07-06 16:15:01 +08:00
这个名字 orz
abersheeran
2020-07-06 16:15:46 +08:00
@janxin hhh, 这个名字咋了
huanglongtiankon
2020-07-06 16:21:06 +08:00
框架名字够直白的。。
abersheeran
2020-07-06 16:22:02 +08:00
@huanglongtiankon 哈哈哈。毕竟这是初衷,实在是厌恶了用代码搜索器去搜 url 的日子了。
AilF
2020-07-06 16:29:37 +08:00
已 star
abersheeran
2020-07-06 16:31:23 +08:00
@AilF 谢谢😀
bnm965321
2020-07-06 16:37:37 +08:00
那还是 Django 的方式好,在一个地方统一注册
abersheeran
2020-07-06 16:40:14 +08:00
@bnm965321 这个见仁见智。一个文件里配置 URL,如果路由有上千个(我主导开发过这个规模的项目),说实话,也挺难找的。后来我在 Django 里实现了一个类似的根据文件系统寻找路由的小程序,普遍反映找路由比以前快多了。
bnm965321
2020-07-06 16:46:34 +08:00
我个人不太喜欢一个路由放在一个文件,很多时候一些小的接口没必要。可以容忍一个文件 2500 以内
xuqiccr
2020-07-06 16:51:36 +08:00
我以为连接是项目里的一个文件,没想到是真的叫这个名字啊哈哈哈哈
abersheeran
2020-07-06 16:54:56 +08:00
@xuqiccr 这个名字,一开始取的。后来发现项目名带 `.` 问题挺多的,现在也懒得改了😀就这样吧,至少名字能给人留下印象。
xiaolinjia
2020-07-06 17:50:32 +08:00
大概看了眼,主要区别就是把路由映射改成模板名字来映射?
ReysC
2020-07-06 17:56:09 +08:00
收藏,后续看看代码。
yzk66880
2020-07-06 18:11:42 +08:00
赞一个
~
Trim21
2020-07-06 18:16:01 +08:00
好!
mwVYYA6
2020-07-06 19:01:54 +08:00
这名字无敌,过目不忘 XD
so1n
2020-07-06 19:19:24 +08:00
收藏看路由实现……用 starlette 路由遍历真的好痛苦,加 Prometheus exporte 时,只能不去监控 /api/test/{id}类的路由
abersheeran
2020-07-06 21:38:15 +08:00
@so1n 路由实现就是借鉴的 PHP 思路啦。直接以文件相对路径作为 URL 。具体实现是利用了 Python 的模块特点。
ericls
2020-07-06 22:40:15 +08:00
我 18 年的时候也写了一个 https://github.com/ericls/PythonPlug
ericls
2020-07-06 22:41:21 +08:00
支持一下楼主

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

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

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

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

© 2021 V2EX