最近有人抓取了 Github、Stack Overflow、PyPI 上的数据,根据开发者在这些平台上的实际使用行为,对目前的 Python Web 框架进行了排名。这个排名不是基于性能来排序的,但整体我认为其实更综合一些,是大家“用脚投票”选出来的。
在今天的文章里,我想和大家分享这份榜单,以及从中获得的一些启示。
一、具体名单
排名前十五的框架名单如下:
二、排名算法
框架得分计算方式比较简单:
1、首先逐一计算每个指标的得分,具体方法如下:
1)抓取框架对应指标的数据;
2)将该指标的数据从低到高排序
3)指标得分就是框架的序号
2、将每个指标的得分相加,并除以指标的数量,简单说就是求平均值
3、最后将得分转换成百分制,就得到了最终分数
二、榜单启示
我没有太细究数据背后的一些原因,这里仅仅跟大家分享3点观察和启示。
1、Django 仍占主流,但在被 Flask 和 aiohttp 追赶
从最新抓取的数据可以看到,在开发者使用率(PyPI项目主要依赖数,即该框架被多少项目引入作为主要依赖)、社区活跃度(SO问题数、Github星标数、Github贡献者数)方面,仍然排在首位。
这里当然有 Django 功能强大、完备这方面的因素,但是我认为,发展早这个也是它能有如此积累的一个重要原因。
Flask 作为后起之秀,在PyPI项目主要依赖数和Github星标数这两个指标上,已经基本上和 Django 不相上下了。尤其是后者,是最近几年迅速增长起来的。
而且 Flask 和 aiohttp 的下载量远远超过了 Django。
2、异步框架逐步受到大家的欢迎
aiohttp、sanic 等都是原生支持异步调用的,aiohttp 在各项指标上的表现都不错,排在前列,尤其是 PyPI 上的下载量超过了2500万;sanic 目前看上去在开发者中的接受度较一般,在 SO 上的问题数偏少,不到 200 条。
另外,Django 老大哥在 3.0 版本中也加入了 ASGI 的支持。
3、Web 框架中垂直类开始崛起
这里的垂直类框架,我指的是 FastAPI 和 Dash。
FastAPI 是专门用于开发 Rest 服务的框架,国内有很多 Python 自媒体都发文推荐过,性能表现非常优秀,可以媲美 NodeJS 和 Go。
Dash 是 Plotly 出品专门用于开发数据可视化应用的框架,基于 Flask、Plotly.js 和 React.js 打造,但是在编码的时候,可以只使用 Python 来实现。
这两个框架的排名都比较靠前,数据表现很好。
尤其要说明的是 Dash 的势头很强,最近一个月仅靠 4 名贡献者就更新了超过 10 万行代码,背后一个重要的原因是它背后有商业化力量在推动。Dash 是 Plotly 公司基于 Plotly.js 打造的,虽然开源,但是还提供了针对企业的私有部署服务。所以它有很强的动力来推广 Dash。
整体来说,我觉得 Python Web 框架生态是越来越繁荣了,对于广大的开发者来说是特别棒的一件事情。
上面也只是我一些不成熟的看法,欢迎大家留言一起分享自己的观点。如果你有用的不错的Web 框架,也欢迎在留言里向大家推荐。
—END—