• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zhouhuab
V2EX  ›  程序员

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

  •  
  •   zhouhuab · Sep 1, 2024 · 4843 views
    This topic created in 798 days ago, the information mentioned may be changed or developed.

    我本人写过多年 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 写起来生产效率更高一些,人也更好找。

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