1
livenux 248 天前
python 性能是差些,对付大流量 web 使用异步框架应该足够了,况且还有使用 rust 底层 web 框架 https://github.com/sparckles/Robyn
|
2
LeeReamond 248 天前 7
你这个问题意义不大,
1. 大部分人和大部分公司不会选择 python 的方案,原因是 java 在国内环境下更合适,直接原因就是招人随便招都有一帮卷 B 来找你 2. springcloud 生态整合了开发中的一些重要节点,比如微服务和分布式容器化部署,服务注册与发现,管理与更新,均衡负载和智能路由,故障和容错和灾备,以及开发过程中的链路追踪等等问题。这些问题不是说 Python 不能解决,只是说生态导致语言自然分化出了不同定位,你强行要逆趋势而行就要支付对应的代价,有一些过程目前的开源工具做的不是很好,有一些过程需要你自己实现,这些过程中任意一个单拿出来都说不上很难,但一箩筐打包还是令人头疼的工作。 3. 所以你用 java 开发这叫顺势而动,用 python 开发这叫逆天而行。单说坑,python 没什么坑,使用量这么高的语言有什么坑,但是因为你逆天而行所以可以说到处都是坑。 4. 而你使用动态类型语言的优势则是开发周期短,然后如果你资金和技术够,那么另起炉灶会让你对项目有完全的掌握力度。这些优势在资本密集型项目中不具备什么价值。 5. 所以最后问题就变成,你既然都有大流量了,何须在意成本,直接花钱铺路,javaer 帮你把问题解决得服服帖帖。除非你实际上没有大流量,开发还想省钱,然后同时你是个技术专家,非常清楚自己要做什么,那你就用自己熟悉的技术栈。不过如果你是技术专家的话你还来 v2 问什么 |
3
BeiChuanAlex 248 天前
大流量,如果是我,绝对不会用 python
|
4
shinession 248 天前
Instagram, django 的框架, 当然魔改了一部分, 抗的住十亿流量, 成为独脚兽之前语言不是啥问题吧
|
5
crysislinux 248 天前 via Android
流量大语言性能差点多加服务器就好了,关键是架构要能方便的加服务器
|
6
luozic 248 天前
为啥限定是 python ?即使是那几个说的 python 大项目,也是用 python 当胶水,具体的实际中间件,性能敏感的地方还是用 c++,golang 甚至 rust 重写了的。
|
7
Hopetree 248 天前
用 Python 就别讲究性能,Python 的最大优势在于可以当脚本用,开发方便才是 Python 的优势,性能真没必要
|
8
FlyingBackscratc 248 天前 1
@luozic 这就比较无聊了,用什么开发业务就是用什么语言,比如你牙齿是每天磨损最多的地方,然后你换了钢牙,能说你这人是钢做的?
|
9
akira 248 天前
豆瓣好像是吧, 还有那个问答社区,v2 之前也是
|
12
luozic 248 天前
@FlyingBackscratc 我的意思是,仅仅 python 搞高性能,短期内是扯淡呢。 用 python 就得多种语言一起用。python 做快速原型,业务代码,遇到性能问题可以快速切换语言再搓一遍
|
13
codegenerator 248 天前
你这个问题有歧义
如果你的需求是 web 后端 api ,我可以肯定的说没有任何问题 因为 Instagram 和早中期字节使用完全没有问题,字节是这 2 年才换的 go 但是历史还是遗留不少 python 但是你说你的需求是音视频实时编解码之类的,那 python 肯定不合适 python 最大的问题不是性能,而是弱类型,其次是如果做业务的话生态显然不如 java |
14
lithiumii 248 天前 via Android
国外例子有 Instagram ,但不能说没有坑:被收购了之后为了性能 Facebook 就魔改出了 Cinder 。
|
15
RockShake 248 天前
豆瓣之前是,已经转 GO 了,你去查下他们转 GO 的原因不就知道了么
|
16
louisxxx 248 天前
你的业务大到 python 无法支撑的时候还会缺钱重构?就算没人,有钱你也可以直接加机器行了
|
17
cdlnls 248 天前 via Android
每个人对大流量的定义和理解都是不一样的,有可能你以为的大流量,在别人看来就是洒洒水,或者反过来。。。没有参照物的话,这种回答没啥用。
|
18
suyuyu 248 天前
你说的大流量是多大?
|
19
keakon 248 天前 2
用 Python 做过单机几千 qps 的项目,也用 Go 做过多机高可用一天几个请求的项目。说实话绝大部分 web 服务的瓶颈不在语言。
|
20
ben1024 248 天前
一般流量压力不再语言,在数据库;
另 Python 是动态强类型 |
21
pyKane 248 天前 1
楼上说的非常到点子上。
WEB 程序,性能瓶颈真的不在语言上了,WEB 服务多也算是 IO 密集型的。 很多时候要在 IO 瓶颈上找问题。 做过一个在日在线七八十万的项目,纯 Python 全部用 asyncio 异步。性能上完全没什问题。机器配制 两台 4C8G 组负载. 一台也能顶得住,但两台可靠性更好. |
22
GeekGao 248 天前
绝大部分商业项目都等不到谈性能的那天(例如 YouTube 、Dropbox 、Quora 、Instagram 等 Python Web 第一梯队)
当然,如果团队人水平菜鸡(例如连 JIT 、GC 的概念都搞不明白的,也不想思考的) 建议还是无脑用 Golang 、Java 。 |
23
james2013 248 天前 via Android
在 web 开发方面,python 远比不上 java
1.java 生态更好,各种库全,缓存,日志,数据库操作等 2.java 开发速度更快,我用 python 框架 flask 写过一个 web 应用,增删查改写的恶心,更别说复杂 sql 3.python 是动态语言,代码写错了也能正常跑起来。多人开发同一个项目时,有同事漏提交代码,或者合并代码冲突覆盖,我用 java 会提示编译报错,跑不起来 4.python 写法一旦不规范,过段时间我都看不懂自己写的是什么了 |
25
FlyingBackscratc 248 天前 15
@james2013 你菜而已。。。
|
26
niubee1 248 天前
大部分的应用瓶颈不是在开发应用的语言,而是 SQL......
|
27
coolair 248 天前
没有什么经验,自己真的太菜了,做过那么多项目,并发上千的都很少见。
而且,遇到瓶颈,基本都是大力出奇迹,能硬件解决的绝不动软件,基本上在代码没有 BUG 的情况下,没人会去优化代码。 这年头,优化代码体现不了工作能力,写一个从硬件到基础软件的升级改造方案,才是领导眼中的价值体现。 |
28
qiyilai 248 天前
和语言没啥太大关系,生态和开发人员的数量和薪资才是关键
|
29
dayeye2006199 247 天前
大部分 web 都是 IO bound ,堆机器可解。机器比人便宜
|
30
chentt 247 天前 via iPhone
堆机器 硬件比人工便宜多了
|
31
zagfai 247 天前
都需要架构设计,没啥问题,78 年前我在前司做的几亿用户的 app ,日活千万,后端也就全 Python ,后来用 go 改写了部分接口,机器省了 70%。
|
32
kkbblzq 247 天前
经验教训就是不要用 python 写,手动狗头,开个玩笑;虽然顶是顶得住,但是正经的说,python 的性能本来就容易受到代码质量的影响,在招聘层面上想找到比较有水平的人员也相对困难,何必呢
|
33
weeevv 247 天前
开发一时爽,重构火葬场。
如果急着出产品那就上 Python,东西堆出来再说。 ---- 但如果业务太复杂,而你又没有很 NB 的代码规范约束,开发测试用例,分析工具什么的,只靠人肉 DEBUG ,那么大部分的代码迟早会变成一座没人能看懂的屎山,并且任何一个因素都可能导致它在某个地方随机爆发。 于是你一定会用 Go/Java/Rust 之类重构。 --- Python 对程序员的要求太低了,如果一个人只会 Python 的话,我觉得这个人的水平还是要小心考虑一下的。 --- 据说 YouTube 当年用过 Python ,但是后来放弃了. Ref: https://www.zhihu.com/question/21017354/answer/652602653 |
34
zhuangzhuang1988 247 天前
以前有个文章的,成人网站 python 优化
https://www.oschina.net/news/40379/how-i-made-porn-20x-more-efficient-with-python |
35
testcgd 247 天前 via Android 1
db 和 redis 做好隔离就好了,不要写复杂 sql ,redis 不要 hotkey bigkey ,基本上就是加机器的事情……对比起性能,当你业务够的时候还不如想想避免团队的人乱来搞魔法
|
36
lijiachang 246 天前
如果团队技术栈是 Python 的话,用 Django 没什么问题
|
37
haiku 246 天前
OpenAI 就是 Python 后端吧,可以看下它们的事故报告
Python 我讨厌的地方主要是 AsyncIO 生态一般,写起来割裂,其他还好 纯 Web 逻辑 Go 挺不错的 |
38
so1n 246 天前
之前写过一个项目,Java 的服务是在我们的后面,结果我的服务没问题,Java 的天天扛不住挂了,所以一切还是看人
|