2021 年 Flask 用户调查报告(非官方)

2021-10-07 19:42:36 +08:00
 greyli

报告见:

https://greyli.com/flask-report-2021/

欢迎继续提交问卷:

https://jinshuju.net/f/UY6Rd8

5193 次点击
所在节点    Python
19 条回复
akring
2021-10-07 19:49:55 +08:00
存在幸存者偏差吧,参与的很大一部分都是 Flask 使用者
greyli
2021-10-07 19:58:38 +08:00
@akring 幸存者偏差是指哪里?无业率 4.8% 那里是开玩笑的……
loading
2021-10-07 21:37:45 +08:00
104 份提交就做分析了?
Kilerd
2021-10-07 21:56:13 +08:00
开发接口时自动生成 swagger

对 Web API 很友好的支持

加入 pydantic 用于类型检查

哈哈哈哈,why not fastapi 。 现阶段来说我个人感受就是,面对 python 里面其他的异军突起的 web 框架和大而全的 django 的压力下,进步缓慢的 flask 已经难以维持着其自身的市场份额了。

大多数人在接受过 fastapi 那基于 pydynamic 的类型检查后再回去使用原始的 flask 处理模式。

别跟我扯什么 flask 坚持做 general 的 web 框架,市面上的 web 开发有多少已经是前后端分离的模式了?连 spring 的老家伙都有 @restcontroller 了啊。

至于基于 flask 的 api 框架,没看到一个能打的。
mywaiting
2021-10-08 00:20:42 +08:00
分享一个冷笑话:

无论你用哪个 python web 框架开发一个完整的项目,一会这插件一会那实现,东拼西凑

你会发现你竟然凑出了一个 Django
LeeReamond
2021-10-08 01:38:23 +08:00
@mywaiting 这是很无聊的说法,定制不意味着愚蠢,大而臃肿也不意味着万能
dayeye2006199
2021-10-08 02:06:02 +08:00
@mywaiting django 更符合一些 python 的直觉,do one thing with one way 。老年人表示 django 比较友好
namelosw
2021-10-08 02:51:47 +08:00
Flask 挺好的,用 Django 不如用 Rails
imycc
2021-10-08 02:59:35 +08:00
#4 why not fastapi
------
之前换工作之后有机会重新选型,看了一阵 fastapi 的文档,然后自己接了 pydantic 搞了一套类型检查。。

#5 说的也有道理,flask 项目长期维护下去之后,慢慢也会变成类似 Django 一样的“大而全”的框架。但不意味着 Django 是 Flask 项目演化的终点。

我用 Flask 的初衷是 Blueprint+各种钩子已经足够我写 API 了,有什么需求我再根据情况去写。
尽量减少跟框架本身的耦合,连官方插件我也不喜欢用。前几天刚把之前用的 Flask-SQLAlchemy 干掉,重新写了个封装(主要是为了跟 Celery 那边的代码共用)

emm,大概是因为写的项目都还不够重型?毕竟都是内部系统。面向普通用户的大型系统一般也比较少选择 python 开发吧,我也不考虑了
HashV2
2021-10-08 08:48:34 +08:00
@dayeye2006199 #7 雀食 现在属于是用 django 在公司摆烂了
krixaar
2021-10-08 09:22:31 +08:00
@mywaiting 用 Flask/Quart 会有种“做复杂的我为啥不上 django,做简单的我为啥不直接用 PHP 撸”的感觉🤣
greyli
2021-10-08 09:30:52 +08:00
@loading

> 104 份提交就做分析了?

因为没人填。大部分提交都是在问卷发布后宣传的那一阵,后续两个月就基本没有多少了。不过 104 份已经能够反映出很多问题了,重合率比较高的几个事情( API 支持、异步、扩展维护)也都是目前 Flask 社区的关注点。
greyli
2021-10-08 09:38:59 +08:00
@Kilerd

> 大多数人在接受过 fastapi 那基于 pydynamic 的类型检查后再回去使用原始的 flask 处理模式。

既然 FastAPI 可以集成 Pydantic,那 Flask 未必就要用原始的处理模式呀。完全可以自己选择搭配不同的数据序列化库,比如 Pydantic 或是 marshmallow 。

> 至于基于 flask 的 api 框架,没看到一个能打的。

请问你对 APIFlask https://apiflask.com 有什么想法和建议吗?我希望它可以成为能打的那个 :P
Kilerd
2021-10-08 09:46:55 +08:00
@greyli 搜了一搜 flask work with pydynamic 甚至没有文章教你怎么配,这样我就不认同它是一个业界可行或者是推荐的方案了。

至于 marshmallow,flask + marshmallow 组合的易用性远低于 fastapi
greyli
2021-10-08 10:01:42 +08:00
@Kilerd 还是有不少文章的,你没搜到可能是因为拼写错了:是 Pydantic,不是 Pydynamic 。

另外还有两个相关的扩展(后者添加了生成 OpenAPI spec 的支持):

- https://github.com/bauerji/flask_pydantic
- https://github.com/turner-townsend/flask-pydantic-spec
greyli
2021-10-08 10:06:06 +08:00
> 至于 marshmallow,flask + marshmallow 组合的易用性远低于 fastapi

@Kilerd 方便展开说说易用性差在哪里吗?其实 APIFlask 就是 Flask+marshmallow 的组合,而 FastAPI 则是 Starlette+Pydantic 的组合。
Kilerd
2021-10-08 10:06:58 +08:00
@greyli 嗯,是我打错了,对不起。简单看了一下,相比于 fastapi 只用多写一个 validate annotation,那确实也可以。
rogwan
2021-10-08 10:56:26 +08:00
@greyli 新版的 flask 可以直接 return {json} 已经蛮方便了,一般写接口够用。再封装一层 flask restful api 主要有哪些必要场景的?
greyli
2021-10-08 20:49:45 +08:00
@rogwan API 框架和手动集成各种库相比,主要的功能是自动生成 OpenAPI spec 和 API 文档,再就是简化了一些验证请求数据生成错误响应的代码。

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

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

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

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

© 2021 V2EX