[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是多线程安 ...
随机推荐
- C语言程序设计100例之(6):数字反转
例6 数字反转 题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入格式 ...
- Java-100天知识进阶-基本类型-知识铺(一)
知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停地来唤醒你记忆深处的知识点. Java的两大数据类型: 一.内置数据类型 二.引用数据类型 内置数据类型 Java语 ...
- servlet三大组件
servlet大致可以分为三个:简单servlet.过滤servlet.监听servlet servlet: servlet的创建 创建一个类并实现Servlet接口. 重写service方法. 在服 ...
- XML解析之Jsoup
操作xml文件 解析(读取):将文档中的数据解读到内存中 写入:将内存中的数据保存到XML文档中.持久化的存储 解析xml的方式 DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树 优点 ...
- [springboot 开发单体web shop] 6. 商品分类和轮播广告展示
商品分类&轮播广告 因最近又被困在了OSGI技术POC,更新进度有点慢,希望大家不要怪罪哦. 上节 我们实现了登录之后前端的展示,如: 接着,我们来实现左侧分类栏目的功能. ## 商品分类|P ...
- 创建OData Service(基于ASP.NET 4.6.1, EF 6),Part I:Project initialize
由于ASP.NET Core 1处于RC阶段,加上OData WebAPI 对ASP.NET Core 1的跟进不是很积极,基于ASP.NET Core 1的Alpha 1版本已经N月没有check ...
- 三张关联表,大表;单次查询耗时400s,有group by order by 如何优化
问题SQL: select p.person_id as personId, p.person_name as personName, p.native_place as nativePlace, c ...
- thinkphp 获取前端传递过来的参数
thinkphp 获取前端传递过来的参数 use think\facade\Request; // 获取当前请求的name变量 Request::param('name'); // 获取当前请求的所有 ...
- nyoj 255-C小加 之 随机数 (map)
255-C小加 之 随机数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:18 难度:1 题目描述: ACM队的“C小加”同学想在学校中请一些同学一起做一项问卷调查, ...
- 微信小程序-rpx
rpx 是微信小程序解决自适应屏幕尺寸的尺寸单位.微信小程序规定屏幕的宽度为750rpx. 微信小程序同时也支持rem尺寸单位, rem 规定屏幕的宽度为20rem, 所以 1rem = (750/2 ...