当前位置: 首页 > news >正文

【python】Python Web服务器并发性能测试

Python Web服务器并发性能测试

http://www.51testing.com/html/82/n-3715882.html

多套方案来提高 python web 框架的并发处理能力

Python 常见部署方法有 :

  1. fcgi :用 spawn-fcgi 或者框架自带的工具对各个 project 分别生成监听进程,然后和 http 服务互动
  2. wsgi :利用 http 服务的 mod_wsgi 模块来跑各个 project(Web 应用程序或框架简单而通用的 Web 服务器 之间的接口)。
  3. uWSGI 是一款像 php-cgi 一样监听同一端口,进行统一管理和负载平衡的工具,uWSGI,既不用 wsgi 协议也不用 fcgi 协议,而是自创了一个 uwsgi 的协议,据说该协议大约是 fcgi 协议的 10 倍那么快。

其实 WSGI 是分成 server 和 framework (即 application) 两部分 (当然还有 middleware)。

严格说 WSGI 只是一个协议, 规范 server 和 framework 之间连接的接口。

WSGI server 把服务器功能以 WSGI 接口暴露出来。比如 mod_wsgi 是一种 server, 把 apache 的功能以 WSGI 接口的形式提供出来。

  1. WSGI framework 就是我们经常提到的 Django 这种框架。不过需要注意的是, 很少有单纯的 WSGI framework , 基于 WSGI 的框架往往都自带 WSGI server。比如 Django、CherryPy 都自带 WSGI server 主要是测试用途, 发布时则使用生产环境的 WSGI server。而有些 WSGI 下的框架比如 pylons、bfg 等, 自己不实现 WSGI server。使用 paste 作为 WSGI server。
  2. Paste 是流行的 WSGI server, 带有很多中间件。还有 flup 也是一个提供中间件的库。
  3. 搞清除 WSGI server 和 application, 中间件自然就清楚了。除了 session、cache 之类的应用, 前段时间看到一个 bfg 下的中间件专门用于给网站换肤的 (skin) 。中间件可以想到的用法还很多。
  4. 这里再补充一下, 像 django 这样的框架如何以 fastcgi 的方式跑在 apache 上的。这要用到 flup.fcgi 或者 fastcgi.py (eurasia 中也设计了一个 fastcgi.py 的实现) 这些工具, 它们就是把 fastcgi 协议转换成 WSGI 接口 (把 fastcgi 变成一个 WSGI server) 供框架接入。整个架构是这样的: django -> fcgi2wsgiserver -> mod_fcgi -> apache 。
  5. 虽然我不是 WSGI 的粉丝, 但是不可否认 WSGI 对 python web 的意义重大。有意自己设计 web 框架, 又不想做 socket 层和 http 报文解析的同学, 可以从 WSGI 开始设计自己的框架。在 python 圈子里有个共识, 自己随手搞个 web 框架跟喝口水一样自然, 非常方便。或许每个 python 玩家都会经历一个倒腾框架的

uWSGI 的主要特点如下:

  • 超快的性能。
  • 低内存占用(实测为 apache2 的 mod_wsgi 的一半左右)。
  • 多app管理。
  • 详尽的日志功能(可以用来分析 app 性能和瓶颈)。
  • 高度可定制(内存大小限制,服务一定次数后重启等)。

=========================================

https://segmentfault.com/q/1010000002548045

学习tornado时,发现tornado的异步请求使用tornado.gen或者callback实现。

做实验两个请求,一个sleep上5秒,一个立即返回。先请求sleep,再请求立即返回的。 发现django并没有做什么处理。同样可以在第一个请求sleep时,不影响第二个立即返回的请求。请问下django是怎么处理的。

你应该是使用了Django自己的开发服务器跑的例子,在Django关于manage.py的文档中写道:

--nothreading
The development server is multithreaded by default. Use the --nothreading option to disable the use of threading in the development server.

也就是说,默认情况下你使用./manage.py runserver会开启多个线程对HTTP请求进行伺服,所以第二个请求进来时虽然第一个请求仍在sleep,但已经新开了一个线程进行响应处理,看起来像是“非阻塞”的工作模式,其实质是多线程而非单线程,想禁用这一行为也已经给出了答案,加上--nothreading参数:./manage.py runserver --nothreading即可。

Django就没有用异步,通过线程来实现并发,这也是WSGI普遍的做法,跟tornado不是一个概念

相关文章:

  • 【protocolbuff】linux下安装google protobuf[实践] --未成功
  • 【ML】之 线性回归(实战) 研读
  • 【VS2017】VS2017离线安装教程
  • 【hadoop】为什么要用hadoop?
  • 【容器适配器】什么是容器适配器和用法
  • 【socket】setsockopt函数的作用和说明
  • 【hadoop】Hadoop编程实例之MapReduce
  • 【VS】发布库lib/dll 带运行环境(/MT、/MTd、/MD、/MDd)静态库/动态库
  • 【linux】Rehat linux离线安装GCC等软件的方法
  • 【‘前端‘框架】React、Vue、Bootstrap、easyUI 、AngularJS 的区别
  • 【java】什么是maven
  • 【Protocol Buffer】Windows Protocol Buffer 使用教程[实践中...]
  • 【java】115-Java经典
  • 【Hbase】HBase入门教程
  • 【前端框架】前端框架学习
  • 345-反转字符串中的元音字母
  • CentOS从零开始部署Nodejs项目
  • CSS居中完全指南——构建CSS居中决策树
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • gulp 教程
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • k个最大的数及变种小结
  • nginx 负载服务器优化
  • python_bomb----数据类型总结
  • Python学习之路16-使用API
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SpringCloud集成分布式事务LCN (一)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • ucore操作系统实验笔记 - 重新理解中断
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 聊聊redis的数据结构的应用
  • 前端学习笔记之观察者模式
  • 用 Swift 编写面向协议的视图
  • 运行时添加log4j2的appender
  • 在Docker Swarm上部署Apache Storm:第1部分
  • HanLP分词命名实体提取详解
  • puppet连载22:define用法
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #Linux(make工具和makefile文件以及makefile语法)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (生成器)yield与(迭代器)generator
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • @WebService和@WebMethod注解的用法
  • [ Linux ] Linux信号概述 信号的产生
  • []我的函数库
  • [100天算法】-不同路径 III(day 73)
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [ASP]青辰网络考试管理系统NES X3.5