Gunicorn设计部分的翻译
Design
关于Gunicorn架构的简要描述。
Server Model
Gunicorn是基于pre-fork(预启动,提前fork)的工作模式。这就意味着Gunicorn是由一个主进程来管理这些worker进程的。主进程不会知道那些客户端的任何事情,所有的请求和响应都是由worker进程来处理。
Master
主进程要做的就是监听各种子进程的信号和做出相应动作,它通过监听信号,如TTIN,TTOU,CHLD来管理这些运行中的worker。TTIN和TTOU信号告诉主信号去增加或减少运行worker的数量。CHLD则是表明了一个子程序被终止了,这个时候主程序就会自动重启这个失败掉的worker。
Sync Workers
默认的worker工作模式就是同步worker,一次只能处理一个请求。这个模式是最简单的,因为无论出现任何错误,都只会影响那一个请求。尽管前文提出一次只执行一个请求,但我们在编写应用程序的时候要提出一些假设。(最后一句我暂时没有理解)
Async Workers
异步worker模式是基于Greenlets(通过Eventlet和Gevent实现)。Greenlets是由python的多线程协作实现的。一般情况下,我们的应用可以直接使用这个worker模式而不需要做其他事情。
Tornado Workers
Gunicorn也支持Tornado worker模式,你还可以用Tornado的框架来写相应的应用。不过尽管Tornado worker能够用来处理WSGI应用,但文档并不推荐使用这个模式。
AsyncIO Workers
这个模式是兼容python3的,有两种worker。
gthread模式是线程worker,它从主循环中接收连接,将这个连接作为一个任务放到线程池中。在长连接的情况下,连接会被放在循环中等待事件的发生,如果长连接超时还没有事件发生的话,连接会被关闭。
gaiohttp就是直接用aiohttp这个库。(仅支持python3)
Choosing a Worker Type
默认的同步工作模式是假设你的应用是受到CPU和网络带宽的限制,一般情况下,就是说你的应用不会处理大量不可预见的访问。举个例子,假如你的应用突然收到很多请求,那么有可能会有很多连接堆积在服务器上,从而导致一些对外服务失效。在这种情况下,异步工作模式会更好一些。
文档解释推荐设置一个缓存代理在Gunicorn前面的主要原因,是因为假设了硬件资源不足。如果直接将这些暴露到网络中,dos攻击就会笑出声。文档推荐了用Hey来做负载测试。
以下行为要求异步模式
- 应用中有长阻塞
- 面向网络的服务请求(个人理解为就是API)
- 流请求和流响应
- 长时间轮询
- 网络套接字
- Comet
Gunicorn设计部分的翻译的更多相关文章
- 2014年的Google I/O app设计中的材料设计-渣渣的翻译
又是一篇翻译,用了三个多小时.http://android-developers.blogspot.co.id/2014/08/material-design-in-2014-google-io-ap ...
- Gunicorn部署部分的翻译
部署Gunicorn 文档建议Gunicorn最好是用在代理服务器后面.(等于前面最好加一个反向代理) Nginx Configuration 文档建议用Nginx,当然用其他也可以,但是要确保当你用 ...
- Gunicorn配置部分的翻译
写在前面,虽然翻译得很烂,但也是我的劳动成果,转载请注明出处,谢谢. Gunicorn版本号19.7.1 Gunicorn配置 概述 三种配置方式 优先级如下,越后的优先级越大 1.框架的设置(现在只 ...
- Kafka的架构设计(目前翻译最好的一稿)
转自:http://www.oschina.net/translate/kafka-design 参与翻译(4人):fbm, 飞翔的猴子, Khiyuan, nesteaa 感谢这些同志们的辛勤工作, ...
- 关于API:好的设计和坏的设计【eolink翻译】
以前开发或更新 API 时,我们经常需要深入讨论对 API 的结构.命名和功能等,这个花费了大量的时间. 随着 API 行业的蓬勃发展,API 设计也越来越重要.这么多年发展下来,一些如REST AP ...
- PS网页设计教程——30个优秀的PS网页设计教程的中文翻译教程
PS网页设计教程--30个优秀的PS网页设计教程的中文翻译教程 作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,"熟读唐诗三百首,不会作 ...
- 来自HeroKu的HTTP API 设计指南(中文版)
原文转自:http://get.jobdeer.com/343.get 来自HeroKu的HTTP API 设计指南(中文版) 翻译 by @Easy 简介 本指南中文翻译者为 @Easy ,他是国内 ...
- 【测试】Gunicorn , uWSGI同步异步测试以及应用场景总结
最近使用uwsgi出了一些问题,于是测试下Gunicorn测试对比下 环境 一颗cpu 1g内存 Centos系统 Django作为后端应用,Gunicorn默认模式和异步模式,响应基本是无阻塞类型 ...
- 对设计领域中Tile和Card的理解
前端工程师离不开设计, 谈到设计就要想到大名鼎鼎的material design主题, 而material是以card为经典单元的, card即卡片, 是层次化模型的最小模块, 用于提供扁平化的信息, ...
随机推荐
- springboot(五):springboot整合shiro-登录认证和权限管理
http://z77z.oschina.io/ http://www.cnblogs.com/aqsunkai/category/982003.html https://www.cnblogs.com ...
- js 正则学习小记之匹配字符串字面量优化篇
昨天在<js 正则学习小记之匹配字符串字面量>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯后用 [^"] 才能匹配成功 ...
- html5 canvas 径向渐变
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【LibreOJ】#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop 线段树+完全背包
[题目]#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop [题意]给定一个长度为n的物品序列,每个物品有价值.不超过m的重量.要求支持以下三种操作:1.物品价值区间加减,2.物 ...
- 概率dp(A - Scout YYF I POJ - 3744 )
题目链接:https://cn.vjudge.net/contest/276241#problem/A 题目大意:首先输入n和p,n代表地雷的个数,p代表走一步的概率,1-p代表走两步的概率,然后问你 ...
- 各浏览器 position: fixed 造成的bug 通用解决办法,Safari, iOS
将原来使用 position: fixed 的元素外层包裹一个 div.fixedWrapper .fixedWrapper { width: 100%; overflow: hidden; pos ...
- innobackupex做MySQL增量备份及恢复【转】
创建备份用户 mysql> grant process,reload,lock tables,replication client on *.* to 'backup'@'localhost' ...
- spring mvc file upload
文件上传 1.需要导入两个jar包 2.在SpringMVC配置文件中加入 1 2 3 4 <!-- upload settings --> <bean id="multi ...
- 三、vue脚手架工具vue-cli的使用
1.vue-cli构建 vue-cli工具构建:https://blog.csdn.net/u013182762/article/details/53021374 npm的镜像替换成淘宝 2.项目运行 ...
- CSS3实现图片木桶布局
CSS3实现图片木桶布局 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <script> window.navigator.appVersion.inde ...