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

2024-09-01 12:04:54 +08:00
 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 写起来生产效率更高一些,人也更好找。

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

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

https://ex.noerr.eu.org/t/1069343

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

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

© 2021 V2EX