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

迁移一个开源 Python Flask 的项目,选 Go 还是 Rust

  •  
  •   zhouhuab · 60 天前 · 3068 次点击
    这是一个创建于 60 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我本人写过多年 Go 和 Rust ,自由职业开源从业者 。

    之前是想招人用 Go 写,还特地发帖招人,效果不佳,现在决定自己写,反正闲着也是闲着,省下的钱可以改善生活。

    我起初的想法是 Go ,但是这个项目有个特殊点在于高度依赖 Pandas 的 DataFrame ,Go 倒是有平替,但是质量不行而且年久失修,相比而言,Rust 的 Polars 就强大很多,而且 Polars 有 Python 版本,更加方便重用原有的插件系统(大量传递 DataFrame )。

    其他方面的比较各有优劣,比如 Mixin Go 更好做,而 Rust 要么抛弃 Mixin ,要么就用不大友好的宏来做。同样还有很多 Decorator ,Rust 还是宏, Go 好像只能推倒 Decorator 了。Go 的插件系统好做些,但是考虑到 Polars 和支持 Python 插件,这个优势又不大明显了。

    至于 Flask 本身平替这块,Rust 这几年在这方面发展很快,我感觉基本追平 Go ,要啥也都有啥。但是我还是相信这方面 Go 写起来生产效率更高一些,人也更好找。

    25 条回复
    GeekGao
        1
    GeekGao  
       60 天前
    Rust 不好招人。所以选 Go
    zhouhuab
        2
    zhouhuab  
    OP
       60 天前
    烦请冲技术上分析,不要讨论招人的问题
    PTLin
        3
    PTLin  
       60 天前
    那就 rust ,web 那块直接用 loco.rs
    echoless
        4
    echoless  
       60 天前
    好奇是哪个开源项目? 为什么要重写?
    zhouhuab
        5
    zhouhuab  
    OP
       60 天前
    @PTLin 感觉还不错,axum 上写的,但是不知道为啥选 sea-orm 不选 diesel ?
    ke1e
        6
    ke1e  
       60 天前 via Android
    我觉得没有 Go 能做到 Rust 做不到的,但是你需要牺牲更多的精力去 make it work
    zhouhuab
        7
    zhouhuab  
    OP
       60 天前
    @PTLin 仔细看了一下,没啥帮助,反倒束手束脚,也就小学生玩一下
    zhouhuab
        8
    zhouhuab  
    OP
       60 天前
    @zhouhuab 当然了,只是做个原型展示是可以的
    cmdOptionKana
        9
    cmdOptionKana  
       60 天前   ❤️ 4
    即使在 V 站,“写过多年 Go 和 Rust” 的人也不多,这个问题还不如你直接出结论给大家科普😂
    Austaras
        10
    Austaras  
       60 天前
    diesel 不支持 async ,虽然可能个人开发走 IPC 问题不大,但还是不爽
    Austaras
        11
    Austaras  
       60 天前
    rust 说影响开发速度肯定是影响,但都不考虑招人了那不如选喜欢的
    codegenerator
        12
    codegenerator  
       60 天前
    完全没有看出来 go 和 rust 比 flask 好在哪里?
    大多数情况使用 flask 的场景,go 和 rust 在这方面都比较菜
    zeusho871
        13
    zeusho871  
       60 天前
    llgo 可以直接有 py 生态 为什么不用?
    Kauruus
        14
    Kauruus  
       60 天前
    @zeusho871 目前 llgo 对 go 支持不咋地,连 fmt, net/http 这些都没有 :(
    zeusho871
        15
    zeusho871  
       60 天前
    实在不行混合 py 干吧,直接 rpc 调用,或者把那部分代码用 nuitka 编译成类库给 go 调用
    jollywang
        16
    jollywang  
       60 天前
    用 go 和 rust 替换掉 flask, 主要目的是省钱? 确定? 换成这个能省钱, 那你这项目就必须得考虑招人啊
    noqwerty
        17
    noqwerty  
       60 天前
    迁移的目的是什么呢?如果是性能原因那先把 pandas 部分替换成 polars 观察一下是否比直接重写整个代码库要好一些
    IvanLi127
        18
    IvanLi127  
       60 天前
    不能慢慢 Rust 掉嘛,既然已经有现成的项目了,也没必要立即全部换语言。
    DollarKiller
        19
    DollarKiller  
       60 天前
    orm 感觉挺重的 rust sqlx 就挺好 rust 配合 chatgpt 写代码很快
    bronyakaka
        20
    bronyakaka  
       60 天前
    肯定 rust 。go 库都是几年前的玩意,这么久没人维护你也用?
    zwy100e72
        21
    zwy100e72  
       60 天前
    以自己开心为目标的话,想写几轮都可以;以性能优化为目标的话,应该先做性能分析;以可用性、可维护性为目标的话,也应该先分析现状(“痛点”),再做考虑
    zhouhuab
        22
    zhouhuab  
    OP
       60 天前
    @zwy100e72 你说错了,都不是
    xgdgsc
        23
    xgdgsc  
       60 天前 via Android
    选 julia
    adoal
        24
    adoal  
       60 天前
    为什么要迁?
    xingjue
        25
    xingjue  
       60 天前
    选 go 吧 好招人
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5908 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:28 · PVG 10:28 · LAX 19:28 · JFK 22:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.