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

112 天前
 zhouhuab

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

3223 次点击
所在节点    程序员
25 条回复
GeekGao
112 天前
Rust 不好招人。所以选 Go
zhouhuab
112 天前
烦请冲技术上分析,不要讨论招人的问题
PTLin
112 天前
那就 rust ,web 那块直接用 loco.rs
echoless
112 天前
好奇是哪个开源项目? 为什么要重写?
zhouhuab
112 天前
@PTLin 感觉还不错,axum 上写的,但是不知道为啥选 sea-orm 不选 diesel ?
ke1e
112 天前
我觉得没有 Go 能做到 Rust 做不到的,但是你需要牺牲更多的精力去 make it work
zhouhuab
112 天前
@PTLin 仔细看了一下,没啥帮助,反倒束手束脚,也就小学生玩一下
zhouhuab
112 天前
@zhouhuab 当然了,只是做个原型展示是可以的
cmdOptionKana
112 天前
即使在 V 站,“写过多年 Go 和 Rust” 的人也不多,这个问题还不如你直接出结论给大家科普😂
Austaras
112 天前
diesel 不支持 async ,虽然可能个人开发走 IPC 问题不大,但还是不爽
Austaras
112 天前
rust 说影响开发速度肯定是影响,但都不考虑招人了那不如选喜欢的
codegenerator
112 天前
完全没有看出来 go 和 rust 比 flask 好在哪里?
大多数情况使用 flask 的场景,go 和 rust 在这方面都比较菜
zeusho871
112 天前
llgo 可以直接有 py 生态 为什么不用?
Kauruus
112 天前
@zeusho871 目前 llgo 对 go 支持不咋地,连 fmt, net/http 这些都没有 :(
zeusho871
112 天前
实在不行混合 py 干吧,直接 rpc 调用,或者把那部分代码用 nuitka 编译成类库给 go 调用
jollywang
112 天前
用 go 和 rust 替换掉 flask, 主要目的是省钱? 确定? 换成这个能省钱, 那你这项目就必须得考虑招人啊
noqwerty
112 天前
迁移的目的是什么呢?如果是性能原因那先把 pandas 部分替换成 polars 观察一下是否比直接重写整个代码库要好一些
IvanLi127
112 天前
不能慢慢 Rust 掉嘛,既然已经有现成的项目了,也没必要立即全部换语言。
DollarKiller
112 天前
orm 感觉挺重的 rust sqlx 就挺好 rust 配合 chatgpt 写代码很快
bronyakaka
112 天前
肯定 rust 。go 库都是几年前的玩意,这么久没人维护你也用?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1069343

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX