[TimLinux] django 全局变量在WSGI多进程多线程环境中的研究
场景1:
2个进程,每个进程1个线程,请求函数中设置了10秒sleep,9个请求同一URL:
结果:
1. 全局变量ID值,在每一个进程中相同,不同进程中不相同
2. 并行只能接受2个请求,同时发起多个请求,则需要排队等待处理
场景2:
1个进程,每个进程2个线程,请求函数中设置了10秒sleep,9个请求同一URL:
结果:
1. 全局变量ID值,在单进程中相同,每个线程中也相同
2. 并行只能接收2个请求,同时发起多个请求,则需要排队等待处理
场景3:
2个进程,每个进程2个线程,请求函数中设置了10秒sleep,9个请求同一URL:
结果:
1. 全局变量ID值,在每一个进程中相同,同一进程中每个线程中也相同,,不同进程中不相同
2. 并行只能接收4个请求,同时发起多个请求,则需要排队等待处理
总结:
1. 每个WSGI进程会拥有独立的python变量,该进程内线程共享该变量
2. 进程数 乘以 线程数得到同时能够处理的并发请求数
3. 一个固定的线程,正在处理一个请求时,请求未处理结束,不会同时处理另外的请求。
http+wsgi配置文件示例:
<VirtualHost *:80>
WSGIDaemonProcess 'pname' python-path=/my/web/site \
processes=2 \
threads=2 \
display-name=%{GROUP}
WSGIProcessGroup 'pname' WSGIScriptAlias / /my/web/site/site/wsgi.py
Alias /static/ /my/web/site/static/
<Directory >
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory> <Directory /my/web/site/site/>
Require all granted
</Directory> ErrorLog /var/log/httpd/mysite.log
LogLevel warn
</VirtualHost>
[TimLinux] django 全局变量在WSGI多进程多线程环境中的研究的更多相关文章
- 在多线程环境中使用CoreData
在多线程环境中使用CoreData BY 子非鱼 · 2014 年 10 月 13 日 上回书说道,其实CoreData学起来也没有很复杂,我们其实增删改查都和别的ORM大同小异.但是世界总是很复 ...
- JAVA并发七(多线程环境中安全使用集合API)
在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...
- 在多线程环境中使用Jedis
Jedis是一个Java语言的Redis客户端,它为Java语言连接与操作Redis提供了简单易用的接口. Jedis不是线程安全的.故不应该在多线程环境中共用一个Jedis实例.可是.也应该避免直接 ...
- 转:【Java并发编程】之八:多线程环境中安全使用集合API(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17200509 在集合API中,最初设计的Vector和Hashtable是多线程安 ...
- 【Java并发编程】:多线程环境中安全使用集合API
在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...
- 【Java并发编程】之八:多线程环境中安全使用集合API
在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...
- 多线程环境中安全使用集合API(含代码)
转自: http://blog.csdn.net/ns_code/article/details/17200509 在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于 ...
- C# 在多线程环境中,进行安全遍历操作
本文以List作为操作对象MSDN官方给出的List的线程安全的说法:此类型的公共静态成员是线程安全的.但不能保证任何实例成员是线程安全的.只要不修改该集合,List 就可以同时支持多个阅读器.通过集 ...
- java并发编程(八)多线程环境下安全使用集合
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17200509 在集合API中,最初设计的Vector和Hashtable是多线程安 ...
随机推荐
- 连接xshell 时 连不上的问题
最近这一周由于自己的xshell突然连接不到虚拟机,在网上找了很多种方法也没能解决,以至于自己在学习很多知识的时候都没能很好的去验证,去尝试.最后在求助大佬的时候终于将xshell重新连接到了虚拟 ...
- python while指令
while指令 1.它后面可以带一个 Ture 表示一直是真的,这样程序会在while循环里无限进行下去 eg: while Ture: print("打印这个...") 2.它后 ...
- 简单看看@RequestBody注解原理
又到了很无聊的时候了,于是随便看看源码假装自己很努力的样子,哈哈哈: 记得上一篇博客随便说了一下RequestBody的用法以及注意的问题,这个注解作为非常常用的注解,也是时候了解一波其中的原理了. ...
- java遍历一个实体
//遍历order,得到属性值不为空的属性,type:操作类型.0是新增,1是更新 private Map<String, Object> reflect(Order order,Stri ...
- 网站搭建-2-本地网站搭建-安装Linux虚拟机/ 安装IIS Windows
搭建网站-1-域名申请参见公众号 生物信息系统(swxxxt) 首先,已经拥有了一个可以正常使用的域名. 之前买了两年的阿里的服务器,由于是Windows的,最后不了了之了(因为当时找的代码都是lin ...
- 问题:做EsayUI分页报错 $(...).pagination is not a function之后我把<jsp:include page="top.jsp"/>去掉就好了,有大神知道为什么吗?另外分页按键放在那里好些,我放到form表单下,就开始显示,点一下后就没有了
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- Java基础:数值类型转换、强制类型转换
数值类型之间的转换 数值类型之间的转换,在小数值往大数值转换时,不会发生精度的损失.在小数值往大数值转换时有可能发生精度的损失. 比如byte最大值也只有127,如果一个大于127的int类型数据往b ...
- TCP time_wait close_wait问题(可能是全网最清楚的例子)
背景 公司群里,运维发现一个问题,task服务报错(如下) The stream or file \"/data/logs/adn_task/offer_service.log\" ...
- 通过ESP8266调节继电器时间
通过ESP8266调节继电器时间 1.继电器选择(可调节时间的继电器) 2.继电器与esp8266的接线[set --- D6,UP --- D5,DOWN --- D1] 3.Arduino 程序 ...
- pip install xxx Could not fetch URL https://pypi.org/simple/pip/
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirmingthe ssl certificate: ...