V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
greyli
V2EX  ›  Python

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

  •  
  •   greyli ·
    greyli · 2021-10-07 19:42:36 +08:00 · 4813 次点击
    这是一个创建于 903 天前的主题,其中的信息可能已经有所发展或是发生改变。
    19 条回复    2021-10-08 20:49:45 +08:00
    akring
        1
    akring  
       2021-10-07 19:49:55 +08:00   ❤️ 1
    存在幸存者偏差吧,参与的很大一部分都是 Flask 使用者
    greyli
        2
    greyli  
    OP
       2021-10-07 19:58:38 +08:00
    @akring 幸存者偏差是指哪里?无业率 4.8% 那里是开玩笑的……
    loading
        3
    loading  
       2021-10-07 21:37:45 +08:00
    104 份提交就做分析了?
    Kilerd
        4
    Kilerd  
       2021-10-07 21:56:13 +08:00 via iPhone   ❤️ 2
    开发接口时自动生成 swagger

    对 Web API 很友好的支持

    加入 pydantic 用于类型检查

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

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

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

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

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

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

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

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

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

    > 104 份提交就做分析了?

    因为没人填。大部分提交都是在问卷发布后宣传的那一阵,后续两个月就基本没有多少了。不过 104 份已经能够反映出很多问题了,重合率比较高的几个事情( API 支持、异步、扩展维护)也都是目前 Flask 社区的关注点。
    greyli
        13
    greyli  
    OP
       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
        14
    Kilerd  
       2021-10-08 09:46:55 +08:00 via iPhone
    @greyli 搜了一搜 flask work with pydynamic 甚至没有文章教你怎么配,这样我就不认同它是一个业界可行或者是推荐的方案了。

    至于 marshmallow,flask + marshmallow 组合的易用性远低于 fastapi
    greyli
        15
    greyli  
    OP
       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
        16
    greyli  
    OP
       2021-10-08 10:06:06 +08:00
    > 至于 marshmallow,flask + marshmallow 组合的易用性远低于 fastapi

    @Kilerd 方便展开说说易用性差在哪里吗?其实 APIFlask 就是 Flask+marshmallow 的组合,而 FastAPI 则是 Starlette+Pydantic 的组合。
    Kilerd
        17
    Kilerd  
       2021-10-08 10:06:58 +08:00 via iPhone   ❤️ 1
    @greyli 嗯,是我打错了,对不起。简单看了一下,相比于 fastapi 只用多写一个 validate annotation,那确实也可以。
    rogwan
        18
    rogwan  
       2021-10-08 10:56:26 +08:00 via Android
    @greyli 新版的 flask 可以直接 return {json} 已经蛮方便了,一般写接口够用。再封装一层 flask restful api 主要有哪些必要场景的?
    greyli
        19
    greyli  
    OP
       2021-10-08 20:49:45 +08:00
    @rogwan API 框架和手动集成各种库相比,主要的功能是自动生成 OpenAPI spec 和 API 文档,再就是简化了一些验证请求数据生成错误响应的代码。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3353 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:14 · PVG 21:14 · LAX 06:14 · JFK 09:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.