场景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多进程多线程环境中的研究的更多相关文章

  1. 在多线程环境中使用CoreData

    在多线程环境中使用CoreData BY 子非鱼 · 2014 年 10 月 13 日   上回书说道,其实CoreData学起来也没有很复杂,我们其实增删改查都和别的ORM大同小异.但是世界总是很复 ...

  2. JAVA并发七(多线程环境中安全使用集合API)

    在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...

  3. 在多线程环境中使用Jedis

    Jedis是一个Java语言的Redis客户端,它为Java语言连接与操作Redis提供了简单易用的接口. Jedis不是线程安全的.故不应该在多线程环境中共用一个Jedis实例.可是.也应该避免直接 ...

  4. 转:【Java并发编程】之八:多线程环境中安全使用集合API(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17200509     在集合API中,最初设计的Vector和Hashtable是多线程安 ...

  5. 【Java并发编程】:多线程环境中安全使用集合API

    在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...

  6. 【Java并发编程】之八:多线程环境中安全使用集合API

    在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...

  7. 多线程环境中安全使用集合API(含代码)

    转自: http://blog.csdn.net/ns_code/article/details/17200509 在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于 ...

  8. C# 在多线程环境中,进行安全遍历操作

    本文以List作为操作对象MSDN官方给出的List的线程安全的说法:此类型的公共静态成员是线程安全的.但不能保证任何实例成员是线程安全的.只要不修改该集合,List 就可以同时支持多个阅读器.通过集 ...

  9. java并发编程(八)多线程环境下安全使用集合

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17200509     在集合API中,最初设计的Vector和Hashtable是多线程安 ...

随机推荐

  1. 实现 sqrt(x):二分查找法和牛顿法

    最近忙里偷闲,每天刷一道 LeetCode 的简单题保持手感,发现简单题虽然很容易 AC,但若去了解其所有的解法,也可学习到不少新的知识点,扩展知识的广度. 创作本文的思路来源于:LeetCode P ...

  2. ARP通信

    ARP:地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议 简单介绍ARP通信过程: 1.发送端在与接收端进行数据通信转发时的过程: 发送端与接收端进行数据通信之前,需要先知道对端的MAC ...

  3. 012.Kubernetes二进制部署worker节点Flannel

    一 部署flannel 1.1 安装flannel kubernetes 要求集群内各节点(包括 master 节点)能通过 Pod 网段互联互通.flannel 使用 vxlan 技术为各节点创建一 ...

  4. 小白学 Python(23):Excel 基础操作(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  5. pat 1149 Dangerous Goods Packaging(25 分)

    1149 Dangerous Goods Packaging(25 分) When shipping goods with containers, we have to be careful not ...

  6. nyoj 114-某种序列 (python EOFError, List, append)

    114-某种序列 内存限制:64MB 时间限制:3000ms 特判: No 通过数:6 提交数:13 难度:4 题目描述: 数列A满足An = An-1 + An-2 + An-3, n >= ...

  7. 白话布隆过滤器BloomFilter

    通过本文将了解到以下内容: 查找问题的一般思路 布隆过滤器的基本原理 布隆过滤器的典型应用 布隆过滤器的工程实现 场景说明: 本文阐述的场景均为普通单机服务器.并非分布式大数据平台,因为在大数据平台下 ...

  8. C#笔记01——注释、进制、基本数据类型、量和输入输出函数

    一.注释 1.单行注释 使用方法:行首加 ” //“: VS2019中的快捷键(以后如果不特加说明都是VS2019): 注释(CTRL+E,C): 取消注释(CTRL+E,U): 2.多行注释 使用方 ...

  9. Caffe 图像分类

      本文主要描述如何使用 CAFFE 进行图像分类. 开发环境要求:windows 10 64位.Visual Studio 2017..NET framework 4.6.1     分类 在一个项 ...

  10. 安装Linux基本工具

    yum install wget httpd-tools vim lrzsz Linux安装wget:yum -y install wget Linux安装vim编辑器:yum -y install ...