为什么你还在用嵌入式的方式来使用mod_wsgi?
可能你还不知道你的python 网站是否跑在embedded mod of mod_wsgi,不管你知不知道请看下去,因为大部分人都是在这个工作模式下运行的。嵌入式顾名思义就是运行在apache的子进程下,daemon不是。所以不管出于什么考虑,daemon mode是一个更好的选择。
如果deamon mod是一个更好的选择,为什么没有默认提供?
不幸的是嵌入式作为默认是因为mod_wsgi在设计时采用了mod_python的做法,当时也就只有支持嵌入式。这也导致了程序跟apache处理其他静态文件一样来处理python的请求。
虽然后来加入了更像Fastcgi工作的daemon方式后,嵌入式已经作为默认选择很难再改回来了,而在windows下还没有实现,如果改默认选择这会造成混淆。
为什么在嵌入式下跑有这么多问题?
作为apache的子进程的还不是主要的问题,而是子进程是由apache用通用的MPM设置的来管理的。那么通用的MPM设置默认是服务于静态文件的。这些设置必然导致python的web程序必须通过占用大量内存才能运行的好。
PHP之所以在嵌入式下跑没问题是因为PHP就是干这个的。比如说在PHP中所有应用代码都高效的在每个请求中重新加载并大量的根据这个场景做了优化。而Python作为一个通用的语言,在作为Web程序时启动会耗费大量的资源启动。而Python的特点导致他不可能像PHP那样预加载的方式去优化。所以在嵌入式下Python不可能像PHP一样高效。
(好吧这一段是废话,作者想恐吓你不搞好就会让全世界伤心)
在嵌入式下如何配置?
对不起这不是本文的重点。
如何确定是否在嵌入式下跑?
请如下修改你的wsgi文件:
import sys
def application(environ, start_response):
status = '200 OK'name = repr(environ['mod_wsgi.process_group'])
output = 'mod_wsgi.process_group = %s' % nameresponse_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)return [output]
输出如果是:
mod_wsgi.process_group = ''
那就是在嵌入式下了。
未完待续
参考英文原文:http://blog.dscpl.com.au/2012/10/why-are-you-using-embedded-mode-of.html
为什么你还在用嵌入式的方式来使用mod_wsgi?的更多相关文章
- 如果css足够强大了,你还会用编程的方式实现去实现css已有的功能吗?
现在css3 都出来的,但是其实我由于一些原因,有些css2中都能支持的样式,我都没有使用过.我感觉我真的有必要静下心来,去看看那些东西,看看哪些以前都被忽视掉的. 今天我主要来讲三个对于我们编程经常 ...
- 3_主流部署方式介绍-Django+mod_wsgi+Apache
安装apache yum install httpd httpd-devel -y 开机自动重启配置 chkconfig httpd on 重新编译安装python 删除编译记录及文件 修改apach ...
- 都0202年了,你还不知道javascript有几种继承方式?
前言 当面试官问你:你了解js哪些继承方式?es6的class继承是如何实现的?你心中有很清晰的答案吗?如果没有的话,可以通过阅读本文,帮助你更深刻地理解js的所有继承方式. js ...
- 嵌入式服务器jetty,让你更快开发web
概述 jetty是什么? jetty是轻量级的web服务器和servlet引擎. 它的最大特点是:可以很方便的作为嵌入式服务器. 它是eclipse的一个开源项目.不用怀疑,就是你常用的那个eclip ...
- 嵌入式 -- WINKHUB 边信道攻击 (NAND Glitch)
0x00 前言 随着物联网IOT的飞速发展,各类嵌入式设备, 路由器安全研究也越来越火. 但因为跟以往纯软件安全研究的要求不同, 这类研究往往需要结合相应的硬件知识. 很多朋友困惑如何开始, 甚至卡在 ...
- MySql移植到嵌入式Linux平台
最近在做考勤机系统,硬件采用的cortex-A8,哈哈,其实是有点浪费的,2410就可以的.所以就要考虑到考勤数据的存储问题,本来是打算用sqlite数据库存储的,可是后来发现,这个数据库只是一个本地 ...
- {前端CSS} 语法 Css的几种引入方式 css选择器 选择器的优先级 CSS属性相关 背景属性 边框 CSS盒子模型 清除浮动 overflow溢出属性 定位(position)z-index
前端CSS CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观. 当浏览器读到一个样式表,它就会按照这个样式表来对文 ...
- 【小梅哥SOPC学习笔记】Altera SOPC嵌入式系统设计教程
Altera SOPC嵌入式系统设计教程 第1章 概述 SOPC(System On Programmable Chip,可编程的片上系统)是Altera公司提出来的一种灵活.高效的SOC解决方案.它 ...
- 前端CSS css引入方式 css选择器 css选择器优先级
一. CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观. 当浏览器读到一个样式表,它就会按照这个样式表 ...
随机推荐
- jsp-javabean练习1
package javaBean; public class JavaB2 { private String name="lhy"; private int xuehao=123; ...
- TextView的一些高级应用(自定义字体、显示多种颜色、添加阴影)
1. 自定义字体可以使用setTypeface(Typeface)方法来设置文本框内文本的字体,而android的Typeface又使用TTF字体文件来设置字体所以,我们可以在程序中放入TTF字 ...
- 看起来像一个输入框的input,实际上是有两个input
看起来像一个输入框的input,实际上是有两个input
- Agile Software Development ——敏捷开发
敏捷? 过去几年中,软件行业中出现了一个新词汇——agile:与此同时,一个关于新的软件开发方式的变革正悄然兴起. 在老师的引导下,我阅读了Agile Guide网站上的几篇文章,并查阅了相关资料.不 ...
- Webpack使用教程三(webpack-dev-server)
Webpack给本地开发提供了一个可选的服务器webpack-dev-server.webpack-dev-server是一个很小的express应用,使用前需要用npm安装,它根据webpack.c ...
- [转] Linux中启动和停止jar包的运行
脚本一: startTest.sh内容如下:#!/bin/shjava -jar Test.jar & #注意:必须有&让其后台执行,否则没有pid生成echo $! &g ...
- 设计模式之美:Command(命令)
索引 别名 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):直接注入 Receiver 对象,Command 决定调用哪个方法. 实现方式(二):注入 Receiver 的指定方法, ...
- TCP与UDP协议
传输控制协议(Transmission Control Protocol, TCP)和用户数据报协议(User Datagram Protocol, UDP)是典型的传输层协议. 传输层协议基于网络层 ...
- 使用七牛云存储实现Android的自动更新
为了修复Bug或更新软件,我们通常需要实现自动更新,没有哪一个牛逼的人能够搞到每一个用户的机子去帮他们更新. 1.自动更新的流程 我们将了解一下自动更新的思路.既然软件要自动更新,那么它必须知道自己是 ...
- Hadoop Capacity Scheduler源码实现剖析
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2013/09/13/had ...