web 开发有 Python 的 sanic 的异步框架还有必要转 go 吗

2022-04-18 11:28:44 +08:00
 longmeier90

之前都说 web 服务开发都是的瓶颈多是网络 IO 与磁盘 IO 造成的。 以前的 python 同步框架并发高的时候会很慢,但是异步框架 sanic 性能很高可以与 gin 相媲美。 那么还有必要换 go 语言吗,自己对 go 还没有做深入了解,所以想请大佬一起聊聊,go 与 python 异步开发的差异性。

4440 次点击
所在节点    Python
22 条回复
fgwmlhdkkkw
2022-04-18 11:30:37 +08:00
web 服务的性能瓶颈应该是数据库,前面的再快也就那样吧……
但是最大的瓶颈还是业务本身。
不过对于做技术的人来说,技多不压身嘛~
westoy
2022-04-18 11:37:54 +08:00
你去看看 sanic 列出的三方扩展, 有几个在一两年内还有维护的

python 从来不缺协程库, 20 年前就有 stackless 和 twisted , 十几年前 eventlet , 十年前 gevent

库支持从来不是问题, 完整的库生态支持才是问题......
ospider
2022-04-18 12:00:27 +08:00
难道不应该是团队用啥你用啥……
ClericPy
2022-04-18 12:14:15 +08:00
粗略看单核效率的话, Python 和 golang 的协程并发性能差距其实并不大, 多核差距开多核也能拉近. 就拿现在比较主流的 Fastapi 一两万 QPS 的性能来说, 日常根本到不了这种量级的压力, 等到了这个压力的时候, 自然也有新的认识, 估计也不会再问出这种问题

总而言之, 选最擅长的, 其次再考虑业界主流(主要容易招人). 先顺应团队生态, 再考虑顺应市场生态, 前者决定生存, 后者决定发展
est
2022-04-18 12:17:51 +08:00
你们瓶颈都在 web 框架上?

俺这还是在 db 上。
jones2000
2022-04-18 12:22:40 +08:00
主要看能不能通过提升机器性能来,解决问题,如果可以。 升级硬件。 开发是没有办法中的办法了, 花十几 W 升级硬件多美,你用十几 W 能招几个人, 下次开人还要 N+1 。
kingjpa
2022-04-18 12:37:47 +08:00
好尴尬,我这里除了压测,还没遇到瓶颈。。。
longmeier90
2022-04-18 12:50:29 +08:00
@kingjpa 我们太菜了,嘎嘎嘎...
liuxingdeyu
2022-04-18 13:56:38 +08:00
我觉得,学一门语言更多是为了学这门语言的主流编程思想
lux182
2022-04-18 14:27:25 +08:00
sanic 周边似乎有点少,go 不熟悉。
neoblackcap
2022-04-18 14:50:39 +08:00
go 一整个语言就是协程框架,sanic 没法跟它比性能的。
只要是 go 生态的,那么就已经是进入了它的协程生态。python 生态却不一样,有很多同步库的。
但是如果你因为这个问题来问选什么的话,那么我建议你不用选。你自己熟悉什么语言就继续用什么语言就可以了。我还说 Rust 的 actix-web 性能更强,难道你还要去学 Rust?

一般业务的性能差异,我觉得还轮不到你来考虑这些框架的性能满足不了你。这些框架哪个不能轻松解决 C10K 问题?而且 C10K 都是 20 年前的问题了。但是你的生产环境有 C10K 问题吗?等你的业务上了 1 万并发再来考虑吧。
raycool
2022-04-18 14:53:52 +08:00
以前我用 tornado 写过几个生产项目,不过对并发要求都不高。
roundgis
2022-04-18 14:57:45 +08:00
又不是不能用。。。
dilu
2022-04-18 15:06:39 +08:00
相信我,99.99%的项目,其实都不会有性能问题。
iyaozhen
2022-04-18 15:50:38 +08:00
主要是生态(就业) 这么说吧,你搞 Python Web ,这个公司,这个产品可能都没问题,一旦裁员变动,就肯定没有 Go Web 的好找工作
nonduality
2022-04-18 20:21:51 +08:00
IG 这些年来始终用 Django ,除了优化性能,就是加机器,而不是改用语言或框架。
venicid
2022-04-18 22:58:19 +08:00
不用转,不要来,学 python 挺好的(狗头)别和我抢饭碗
ToBeHacker
2022-04-19 02:38:22 +08:00
你用了异步,所有的 IO 都得用异步库,目前这方面 Python 的生态还是不够
Kobayashi
2022-04-19 10:46:37 +08:00
没有,曾经专注于 asyncio 研究了各种异步框架、事件循环代码。但后来入职才发现,很多时候没必要看的那么远,绝大多数的业务根本达不到那样的并发压力。面试的时候曾经面过 2 个做小说的,一个由 Python 转了 Go ,说是用户量大了。另一个就是老 Python 单体项目,缓存+限流,运营时间比前者长,业务流量也比前者大。这是从业务角度来看问题。除非你是什么大厂的主项目,一般都没有那么大的并发。

从技术角度,我觉得都行,吃透一个就够了。实际上大多数人对下边原理都不了解。我见过选 Sanic 调用接口触发模型训练的,觉得 Sanic 快,但根本没看清场景。捕蛇者说播客里,有个来自知乎主持人因为写不出 ASGI 中间件,就觉得 ASGI 协议有问题……

从钱的角度,可能是 Golang 。
rust
2022-04-19 15:18:48 +08:00
你们已经触及到 Sanic 的性能瓶颈了吗?

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

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

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

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

© 2021 V2EX