打算重构一个项目使用 Django,大佬们给点建议 - V2EX
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
Strive0630
V2EX    Python

打算重构一个项目使用 Django,大佬们给点建议

  •  
  •   Strive0630 2021-01-27 10:25:09 +08:00 6371 次点击
    这是一个创建于 1717 天前的主题,其中的信息可能已经有所发展或是发生改变。

    哈喽~ 大佬们 我想把公司管理后台项目重构一下,重新写,使用的技术展的话,就是 python(3.x) + django(xxx) + rest framework + mysql + redis + mongodb + celery + nginx + docker + k8s 现在比较纠结的就是很多项目版本的问题,django 跟 python 或者很多数据库都使用什么版本比较稳定,而且版本还不会太老。希望大佬们踊跃留言,谢谢啦~ ,或者有更好的后端服务架构,用 python 写的,都可以推荐一下。谢谢大家了~

    57 条回复    2021-02-02 10:03:51 +08:00
    qW7bo2FbzbC0
        1
    qW7bo2FbzbC0  
       2021-01-27 10:29:01 +08:00
    啊这,我之前就用的这一套,发现还是单独来做方便点
    GoLand
        2
    GoLand  
       2021-01-27 10:33:00 +08:00
    Python3 现在主流版本应该是 3.6/3.7,没理由不尝试一下 fastapi https://github.com/tiangolo/fastapi/
    37Y37
        3
    37Y37  
       2021-01-27 10:55:50 +08:00
    可以,就这个就行了
    ytymf
        4
    ytymf  
       2021-01-27 10:58:11 +08:00   4
    多大系统啊,活儿整这么全。。。
    79lawyer
        5
    79lawyer  
       2021-01-27 10:58:48 +08:00
    我现在版本是 python3.6.3,Django2.1.4,感觉还行
    baleeny
        6
    baleeny  
       2021-01-27 11:05:21 +08:00
    @ytymf hhh
    xulolololololo
        7
    xulolololololo  
       2021-01-27 11:48:35 +08:00
    这年代了,别用 django 了,尝试下 sanic,fastapi 异步走起
    TabGre
        8
    TabGre  
       2021-01-27 11:50:50 +08:00 via iPhone
    年底了,需要整点活啦?
    fansfans
        9
    fansfans  
       2021-01-27 11:54:20 +08:00
    @xulolololololo django 现在也支持异步了呀 而且各种插件支持也好 文档也全
    u823tg
        10
    u823tg  
       2021-01-27 12:33:02 +08:00
    要不你在等几个月,等 django3.2 出来
    evil0harry
        11
    evil0harry  
       2021-01-27 13:00:30 +08:00
    @u823tg hi
    kaka6
        12
    kaka6  
       2021-01-27 13:33:51 +08:00
    flask 不香吗
    2379920898
        13
    2379920898  
       2021-01-27 13:37:55 +08:00   1
    GO 啊。性能提升一万倍
    aegon466
        14
    aegon466  
       2021-01-27 13:43:42 +08:00
    公司人不少啊
    SjwNo1
        15
    SjwNo1  
       2021-01-27 14:00:09 +08:00
    后台都上 k8s 了。。
    tmackan
        16
    tmackan  
       2021-01-27 14:47:54 +08:00
    @kaka6 hhh django 而且 djang rest framework 个人感觉是重了点
    jmyz0455
        17
    jmyz0455  
       2021-01-27 14:51:34 +08:00
    @2379920898 go 提升这么大吗?
    changeTheGame
        18
    changeTheGame  
       2021-01-27 14:55:50 +08:00
    只会 java,springboot 一把梭。羡慕会 python 的,感觉 python 代码又少又优雅(框架全、python api 设计好)
    Strive0630
        19
    Stive0630  
    OP
       2021-01-27 15:14:45 +08:00
    @hjahgdthab750 想要一个稳定的版本
    Strive0630
        20
    Strive0630  
    OP
       2021-01-27 15:15:02 +08:00
    @GoLand fastapi 目前来说确实很主流, 但是还是要有很多的学习成本
    windfarer
        21
    windfarer  
       2021-01-27 15:15:09 +08:00
    我就知道底下有人要推荐 go...一个公司管理后台用得着一万倍性能吗?难道不是应该哪个开发起来方便用哪个么
    Strive0630
        22
    Strive0630  
    OP
       2021-01-27 15:15:28 +08:00
    @ytymf 其实系统可能也不是很大。 这样的配置应该够用了吧
    Strive0630
        23
    Strive0630  
    OP
       2021-01-27 15:16:05 +08:00
    @u823tg 哈哈哈哈,django 在哪个版本可以支持异步啊, 而且 django 所依赖其它环境也需要兼容啊
    Strive0630
        24
    Strive0630  
    OP
       2021-01-27 15:16:25 +08:00
    @kaka6 我个人觉得 flask 可能真的没有 django 香
    Strive0630
        25
    Strive0630  
    OP
       2021-01-27 15:16:38 +08:00
    @aegon466 嗯? 怎么看出来的公司规模大小呢
    Strive0630
        26
    Strive0630  
    OP
       2021-01-27 15:16:56 +08:00
    @SjwNo1 部署的话,想尝试用集群的方式来做
    Strive0630
        27
    Strive0630  
    OP
       2021-01-27 15:17:36 +08:00
    @jmyz0455 go 提升确实很大, 但是产品不是面向 TO C 的可能在性能体验上会好很多吧
    Strive0630
        28
    Strive0630  
    OP
       2021-01-27 15:18:22 +08:00
    @windfarer 是的,我也是这么想的~ 但是现在比较纠结就是 使用的版本,想使用新的,但是还想兼容每个版本都很稳定
    u823tg
        29
    u823tg  
       2021-01-27 15:22:17 +08:00
    @Strive0630 #23 现在 3.1 就支持,但是 3.2 是长期支持版本过两月就发布。
    lixuda
        30
    lixuda  
       2021-01-27 15:25:48 +08:00
    @Strive0630 3.0 以上
    qW7bo2FbzbC0
        31
    qW7bo2FbzbC0  
       2021-01-27 15:27:16 +08:00
    @changeTheGame #18 楼主说的这一套下来稳定性和维护性甚至比不上 springboot 一把梭的方便,有时候没必要强扭到一个服务上
    wuwukai007
        32
    wuwukai007  
       2021-01-27 15:29:43 +08:00 via Android
    说真的,管理系统 php,java 哪个不比 go 强,有人推荐 go 我是没想到的
    zeuss
        33
    zeuss  
       2021-01-27 15:38:41 +08:00   1
    Tornado 转 springboot 了。。。
    longaiwp
        34
    longaiwp  
       2021-01-27 15:50:11 +08:00   1
    我是没想到那么重的东西有人用 py 的,可能这就是爱吧。我情愿 jawa 一把梭。
    echo1937
        35
    echo1937  
       2021-01-27 15:54:10 +08:00
    以前写 Django 的时候,很羡慕 SpringBoot 这种一揽子开箱即用,甚至各种组件的版本搭配都定义好了。

    搭车提问,到了 Java 平台,celery 一般用啥代替?

    @longaiwp #34
    ErwinCheung
        36
    ErwinCheung  
       2021-01-27 15:59:15 +08:00
    @echo1937 我也想学习一下
    wangyzj
        37
    wangyzj  
       2021-01-27 16:15:23 +08:00
    虽然没用过 fastapi
    但正在用 django 的我觉得 django 虽然大而全
    但太重了
    很多东西封装到完全不知道咋回事
    蒙着写
    jzmws
        38
    jzmws  
       2021-01-27 16:17:44 +08:00
    能用就不要动
    metamask
        39
    metamask  
       2021-01-27 16:34:52 +08:00
    直接用最新的就好,py3.7 或者 3.8
    django 版本用 3.x 也问题不大,

    用 drf 这套,主要好处是不考虑性能情况下,涂起代码还是特别舒服的
    metamask
        40
    metamask  
       2021-01-27 16:36:17 +08:00
    实话说,管理后台用 drf 写还是很舒服的,直接上 orm,

    用 drf + django filter

    代码随便涂
    aegon466
        41
    aegon466  
       2021-01-27 16:41:25 +08:00
    @Strive0630 上 k8s 了所以用的人不少 如果公司只有小几万人 没必要用这么臃肿 后期维护麻烦 不过你是想借此学习的话就当我没说过
    SmartKeyerror
        42
    SmartKeyerror  
       2021-01-27 17:10:29 +08:00
    用 Go 来写管理后台这种并发量低、业务逻辑复杂的应用只怕是失了智,能不能不要动不动就推荐 Go 。
    Celery 这东西还是有一些坑的,可以尝试用下 RQ 。k8s 的话如果是公司有统一的集群和完整的 CI/CD 套件,也就是一个 Chart 编写的问题。如果没有的话,还是 Docker 直接跑吧......
    LeeReamond
        43
    LeeReamond  
       2021-01-27 19:15:03 +08:00   1
    @2379920898
    @jmyz0455
    @windfarer

    然而事实是 go 并不能快一万倍。

    https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=fortune&l=zijmrj-1r

    根据 techempower 的测试,对于 1202 年的异步 python,框架转发能力方面,go 的最大模型领先五倍性能,中位数在 2-3 倍。所以 2-3 倍的执行效率(大概率冗余)是你从 python 生态切换到 go 生态的理由?
    woostundy
        44
    woostundy  
       2021-01-27 19:23:49 +08:00
    @echo1937 #35 kafka
    echo1937
        45
    echo1937  
       2021-01-27 20:05:46 +08:00
    @woostundy #44

    celery,任务队列,kafka,消息队列,两者有一些区别,功能覆盖也不一样,
    https://zhuanlan.zhihu.com/p/272855534
    inframe
        46
    inframe  
       2021-01-27 22:53:04 +08:00
    生态上还是有点差距的,python 你要啥啥都有,慢一点又没事,反正企业内部站点日均 10000 不到的访问量
    写起来爽就完事
    windfarer
        47
    windfarer  
       2021-01-27 23:17:00 +08:00 via Android
    @LeeReamond 说的就是啊,Web 应用都是 io 为主,不同语言速度差别没那么明显的
    LeeReamond
        48
    LeReamond  
       2021-01-28 00:19:11 +08:00 via Android
    @windfarer 仅是就事论事,讨论了一下目前的异步框架速度,扩大到全体语言和全体框架并不恰当,实际上前几年 djg2 的时代,使用同步模型+默认中间件设置的话确实是慢得很,go 快不上一万倍,但一千倍还是有可能的
    windfarer
        49
    windfarer  
       2021-01-28 00:28:29 +08:00 via Android
    @LeeReamond 说实话 asyncio 我一直没找到能够优雅使用的方式,到现在还是用 gevent 一把梭
    LeeReamond
        50
    LeeReamond  
       2021-01-28 01:13:40 +08:00
    @windfarer 跟技术栈有关,我开始学习异步已经是 3.5 版本以后的事,因为当时已有原生异步所以从一开始就否决了猴子补丁的方案。现在问我的话我觉得 asyncio 很优雅,并且完全不能理解 gevent 的使用方式
    abersheeran
        51
    abersheeran  
       2021-01-28 09:54:46 +08:00   1
    无脑推 aiohttp/sanic/fastapi 这类异步框架的我笑了。Celery 对 asyncio 的支持心里没点数?劝人上这个,你负责给他踩 Celery + asyncio 的坑?这种整体技术栈,Django+Celery+gevent 是最简单、高效的方式。
    wzwwzw
        52
    wzwwzw  
       2021-01-28 14:36:57 +08:00
    Asyncio 现在的库和库的质量都非常一般。还是 Django + Celery + Gevent 一把梭。
    zcl0621
        53
    zcl0621  
       2021-01-28 15:47:02 +08:00
    你还差个 mongo rest framework ...
    qile1
        54
    qile1  
       2021-01-29 16:16:45 +08:00 via Android
    @LeeReamond 之前看论坛说 fastapi 并不是很快,推荐 bottle,您知道这两个哪个合适做微信公众号吗?
    LeeReamond
        55
    LeeReamond  
       2021-01-29 20:43:11 +08:00
    @qile1 据我所知运营微信公众号不需要自建服务器?而且据我所知 bottle 是同步库,同步模型与异步模型在速度方面是有数量级差距的,这么比较并不公平。
    maSHma
        56
    maSHma  
       2021-02-02 09:20:07 +08:00
    巧了,刚整上一个,使用 celery+redis,如果还用 flower 监测任务的话,有一些版本适配的坑,需要的话可以交流下
    encro
        57
    encro  
       2021-02-02 10:03:51 +08:00
    个人觉得还是 django_q 比 celery 容易上手一些。
    @maSHma


    适合做公众号,当然是微擎

    @qile1
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3036 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 11:58 PVG 19:58 LAX 04:58 JFK 07:58
    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