V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huichao
V2EX  ›  Flask

大点儿的项目你会选择 flask 开发 api 吗?

  •  
  •   huichao · 2020-12-18 12:20:35 +08:00 · 7942 次点击
    这是一个创建于 1196 天前的主题,其中的信息可能已经有所发展或是发生改变。
    45 条回复    2020-12-19 11:51:09 +08:00
    abersheeran
        1
    abersheeran  
       2020-12-18 14:42:38 +08:00
    你这是多想不开,要用关系型数据库的项目用 Django 一把梭啊。其他项目用 bottle/starlette 速度快、代码简单易读。
    huichao
        2
    huichao  
    OP
       2020-12-18 15:04:24 +08:00
    因为已经有前端, 计划做个前后端分离,vue.js + flask (api) 这样的方式, 可是项目功能比较多 不知道 flask 并发如何?主要喜欢 flask 的简单,以后维护起来容易。
    abersheeran
        3
    abersheeran  
       2020-12-18 15:20:40 +08:00   ❤️ 1
    @huichao Python 流行框架的基准测试里,Flask 也就比 Django 快一点,比其他的都慢多了,可是 Django 功能多啊,真给 Flask 加那么多东西,比 Django 还慢。简单来说,Flask 就是最慢的 Python Web 框架。
    viiii
        4
    viiii  
       2020-12-18 15:24:10 +08:00   ❤️ 2
    要简单 + 速度快, 建议看一下 FASTAPI
    如果想最简单实践, 最快出产品, django+rest API 足够了, 性能嘛....业务量真的需要?
    johnsona
        5
    johnsona  
       2020-12-18 15:24:18 +08:00
    python 写 rest 接口的话,用 drf 或者你想试试 fastapi 也可以,用 flask 的话,就像一楼说的。不过你没经历过坏,你估计也感受不到 drf 的香
    ytymf
        6
    ytymf  
       2020-12-18 15:32:19 +08:00
    flask 可不简单,找插件试错的时间,django 都做完了。
    acmore
        7
    acmore  
       2020-12-18 15:32:47 +08:00
    简单 ≠ 易于维护,因为项目的复杂很多时候在于项目本身,框架的作用在于能更好地掌控复杂性,复杂的框架往往在掌控复杂性上做了更多事情。
    说人话就是复杂的项目用复杂的框架,简单的项目用简单的框架。
    CismonX
        8
    CismonX  
       2020-12-18 15:33:41 +08:00   ❤️ 1
    我维护过公司的一个 flask 项目,10w 行的屎山

    听说他们最近打算拿 spring boot 重构。。还好我早就不在那个组了
    johnsona
        9
    johnsona  
       2020-12-18 15:36:19 +08:00
    @CismonX 重构更可怕,重构不算 kpi,还难
    jtsai
        10
    jtsai  
       2020-12-18 15:37:06 +08:00
    不喜欢 python 的 orm
    johnsona
        11
    johnsona  
       2020-12-18 15:38:36 +08:00
    很多人说性能问题,大可不必,真有这个量,不会舍不得花钱的,上集群部署,数据库有压力,django 的 orm 支持分库,不存在问题
    uptonking
        12
    uptonking  
       2020-12-18 15:40:01 +08:00 via iPhone
    all in js 不香吗,node 服务端框架 nestjs 高仿 java 的 spring,用来做 crud 的 rest api 很容易
    johnsona
        13
    johnsona  
       2020-12-18 15:48:06 +08:00
    @uptonking 全都丢给前端去写,手动 doge
    tabris17
        14
    tabris17  
       2020-12-18 15:49:15 +08:00
    flask 慢得要命,而且配套还不完善,很多插件都是 N 年不维护了
    maocat
        15
    maocat  
       2020-12-18 16:03:15 +08:00

    看过一些大点 flask 写的项目( apache superset,宝塔面板 )
    公司自己内部弄了一套 flask 的脚手架(其实就是把 flask 拼装成 django),fork 了一些库加了很多功能(大多数只用一次), 然后开始填业务上的屎
    上面的人都还在比较框架的快慢,我更赞同 #11 的说法 当业务发展到一个量级的时候,服务架构才是应对性能问题的最好方法
    hyqCrystal
        16
    hyqCrystal  
       2020-12-18 16:04:22 +08:00   ❤️ 1
    大点的多大 springboot springcloud 不好使吗
    huichao
        17
    huichao  
    OP
       2020-12-18 16:16:53 +08:00
    这个前后端分离的设计是为了重写很久之前(大概 10 年前用 asp.net 做的)一个 web 系统,里面功能比较多,客户要保留,我大概看了一下有 4 千多个(添加,修改,删除,查询,报表等等)功能操作。这个可能也算个中型的项目了,现在在选择后端用什么写。主要得开发速度快, 易维护,以后肯定会加多新业务或功能。
    charmToby
        18
    charmToby  
       2020-12-18 16:20:33 +08:00
    可以试试 FastAPI,感觉比 Flask 好用多了。
    Jackeriss
        19
    Jackeriss  
       2020-12-18 16:27:15 +08:00 via iPhone
    flask 是真不行,不知道为啥会流行,好像现在也并不流行。。。
    ShuoHui
        20
    ShuoHui  
       2020-12-18 16:38:30 +08:00 via iPhone
    Flask 写了好几个项目,看到这个帖子心惊肉跳的感觉😹😹Python 还有什么框架吗
    rexyan
        21
    rexyan  
       2020-12-18 16:45:00 +08:00 via Android
    不建议,太灵活
    coloz
        22
    coloz  
       2020-12-18 16:46:53 +08:00
    fastapi 更适合写 api
    windfarer
        23
    windfarer  
       2020-12-18 16:55:44 +08:00
    Django 香得很
    abersheeran
        24
    abersheeran  
       2020-12-18 17:08:31 +08:00   ❤️ 1
    @ShuoHui 如果你喜欢微框架,那么推荐 bottle / starlette ( fastapi )。否则只推荐 Django 。
    sidegem
        25
    sidegem  
       2020-12-18 17:13:44 +08:00
    一直在用 flask 看了楼上的回复瑟瑟发抖
    abersheeran
        26
    abersheeran  
       2020-12-18 17:15:39 +08:00
    @Jackeriss 运营。Flask 的作者自己都说过,决定开源项目流行度的,最重要的不是代码怎么样而是运营。“没人真的会认真去看你是否实现了你宣传的”。
    chenqh
        27
    chenqh  
       2020-12-18 17:16:50 +08:00
    @huichao 4K 个操作?
    YUX
        28
    YUX  
       2020-12-18 17:16:53 +08:00
    我自己的小项目用的是自己魔改的 flask 本地(m1 mba)压测 能跑 20000+ Requests/sec 😂 方法就是增加进程来应对高并发

    但是正在搞的下一个项目妥妥 fastapi
    YUX
        29
    YUX  
       2020-12-18 17:17:58 +08:00
    @YUX 拥抱 asyncio 叭!
    fanjianhang
        30
    fanjianhang  
       2020-12-18 17:22:06 +08:00 via Android
    用过,不是很香
    huichao
        31
    huichao  
    OP
       2020-12-18 17:22:50 +08:00
    @chenqh 是的。看他们的 source code 算出来的。 看来试试 Django 和 fastapi 了要,Django 有过一个项目,fastapi 还没做过,python 也都是刚开始用不到 2 年,如果 python 很多问题我可能会用回 php 了,可 php 现在在走下坡路,要考虑下个 10 年 ☺️。python 可以的,我看好 python 。
    westoy
        32
    westoy  
       2020-12-18 17:24:53 +08:00
    @Jackeriss

    django 当时和他们的主业务耦合太紧了, 自由度很低, 而且性能有点差。 当时有种说法就是你用 django 去写 django 合适的项目, 你会非常舒服, 但反之会很痛苦。

    turbogears 和 pylons 又三天两头变, 而且依赖的三方库很多很散, 安装包冲突装不上,官方教程的案例跑不通是常有的事

    flask 属于折中, 自由度高, 而且依赖的 wekzeug 、jinja 之类的又都是 pocoo 自己的, 可靠性也强, 文档也写的好
    iceneet
        33
    iceneet  
       2020-12-18 17:26:42 +08:00
    没必要吧 何必折磨自己 用 django 不更好
    hongweiliuruige
        34
    hongweiliuruige  
       2020-12-18 17:26:48 +08:00   ❤️ 1
    nestjs + typeorm + react-hook/vue3 ts 全栈不香吗,,要性能有性能,要可维护 ts 大法好,要将来招人 js 程序员最多。。
    abersheeran
        35
    abersheeran  
       2020-12-18 17:29:20 +08:00
    @YUX asyncio 的 ORM 没有好用的吧……hhh,如果不在乎这方面,asyncio 那挺好的。
    Jackeriss
        36
    Jackeriss  
       2020-12-18 17:30:06 +08:00
    @westoy #32 你说的对,但是到了 asyncio 和前后端分离时代 Flask 就没多大优势了,fastAPI 是完美替代品。
    brendanliu
        37
    brendanliu  
       2020-12-18 17:33:29 +08:00
    就没有人提 sanic 么
    chenqh
        38
    chenqh  
       2020-12-18 17:34:52 +08:00
    @huichao 国内下个 10 年,应该 golang 会火一点,当然 java 常青树
    TypeError
        39
    TypeError  
       2020-12-18 17:35:24 +08:00 via Android
    Python 里一直用 tornado
    不过之后估计换 Go + Gin 了
    ericwood067
        40
    ericwood067  
       2020-12-18 17:38:49 +08:00
    之前自己的小项目是用 flask 写的,看了大家的推荐,是时候试试 fastAPI 了。。
    vagra
        41
    vagra  
       2020-12-18 22:35:46 +08:00
    flask 确实慢。十倍地慢!

    我用 calibre-web 搭了个网站,这就是 flask 开发的,测速,比另外几个 php 的网站慢了 10 倍。
    dayeye2006199
        42
    dayeye2006199  
       2020-12-19 05:16:46 +08:00
    flask 项目需要会代码组织,否则写在若干个巨大无比的文件,会出现上面提到的几万行的情况。
    组织需要动脑筋,不想动脑筋,就 django rest 这一套把,糙快猛,代码质量一般不会太差。
    darknoll
        43
    darknoll  
       2020-12-19 10:37:29 +08:00
    用这玩意儿不如用 node
    exploreexe
        44
    exploreexe  
       2020-12-19 11:23:08 +08:00
    @CismonX #8 10w 行的屎山 这形容可太真实了 哈哈哈
    nonduality
        45
    nonduality  
       2020-12-19 11:51:09 +08:00   ❤️ 1
    @Jackeriss 我觉得 Flask 流行起来的部分原因是,入门很简单,按教程要求写个函数,用修饰器绑定路由看起来也很漂亮,完了一个 py 文件就能跑起来,这样把很多人引上贼船。还好我不在意这个,用 Django 省事不折腾。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3500 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:03 · PVG 19:03 · LAX 04:03 · JFK 07:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.