如果要说 flask 怎么样,我推荐看看这篇 https://wakatime.com/blog/14-pirates-use-flask-the-navy-uses-django
Pirates use Flask, the Navy uses Django 这个观点是很有兴趣的,当然我觉得海盗思维使用 django 其实更有杀伤力。
大部分观点我认同,特别是性能方面的观点。
用 python 还要来追求性能我一直觉得是在讲笑话,且嗤之以鼻。基于 python 做 web 开发更多的是追求开发效率。
要知道现在一个程序员的工资可够你买很多台机器做性能提升了。
另外现在的机器对 DAU 没过千万的网站,python 也足够了。要说瓶颈,大部分 web 场景其实都是 IO 的瓶颈,和中间件没什么关系。
另外本人支持 django,flask 真的只适合小大小闹,当项目大了,你一样要不得不引入 class view 的概念。
数百个控制器,一样需要把 url 模块化。 看看 flask,blueprint 一引入,整个项目就又丑了。
最后你会发现,这和 django 有什么区别呢? 微服务吗?基于 django 难道就不能设计微服务了吗?
又一个重复的轮子。
我刚刚测试了一下,请求自己服务器上搭建的 httpbin,在确保延时稳定的情况下进行的记录。
Python3.7+aiohttp+aiohttp-requests,无 uvloop,asyncio.gater 并发请求:
- 10 个并发 0.276 秒
- 20 个并发 0.381 秒
- 32 个并发 0.412 秒
- 50 个并发 0.607 秒
Golang1.12.5+net/http,goroutines+channel 并发请求:
- 10 个并发 0.113 秒
- 20 个并发 0.164 秒
- 32 个并发 0.220 秒
- 50 个并发 0.385 秒
从结果上来看 Golang 确实是不会比 Python 慢的。根据以往的经验来看,Python 加上了 uvloop 之后应该能快个一半左右,也就是接近 Golang 的水平,仅此而已。所以我觉得不是网络请求方面拖慢的速度…