Python高并发我觉得可以分为两个角度来讨论,第一是如何模拟高并发,跟压力测试挂钩;第二是我们的程序如何承受高并发。
一、如何模拟高并发?
原理:多线程、多进程、协程
高并发的一些指标
PV,TPS,QPS,RPS
压力测试工具:Locust、wrk等
wrk压力测试工具介绍:
http://zjumty.iteye.com/blog/2221040
二、如何承受高并发?
1、从redis获取数据。redis读取速度快,所以在短时间内能承受更多的连接数
2、使用gunicorn的多进程模式,通过指定 -w (进程数)这个参数。
- 使用gunicorn的异步模式(没实践过)
https://segmentfault.com/q/1010000004532745
4.使用gunicorn+nginx,套上一层nginx据说可以起到负载均衡等效果(具体我也不了解)
5.使用一些异步框架
5.1 sanic框架,语法跟flask非常相似,但是性能优于flask,使用wrk进行压测,其单进程与gunicorn开5进程的效果差不多。
https://segmentfault.com/a/1190000012951052
5.2 gevent框架
https://blog.csdn.net/qq_38934189/article/details/80591463
5.3 Tornado框架
6.Linux的多路复用(跟epoll相关,这个更不清楚)