大点儿的项目你会选择 flask 开发 api 吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huichao
V2EX    Flask

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

  •  1
     
  •   huichao 2020-12-18 12:20:35 +08:00 10278 次点击
    这是一个创建于 1756 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
    PRO
       2020-12-18 17:16:53 +08:00
    我自己的小项目用的是自己魔改的 flask 本地(m1 mba)压测 能跑 20000+ Requests/sec 方法就是增加进程来应对高并发

    但是正在搞的下一个项目妥妥 fastapi
    YUX
        29
    YUX  
    PRO
       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     Solana     2830 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 13:33 PVG 21:33 LAX 06:33 JFK 09:33
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86