Gunicorn是什么

Fanly 问答 2019-07-10 14:14:15 阅读(...)

Gunicorn(绿色独角兽)是一个用于UNIX的Python WSGI HTTP服务器。它是一个前叉工作者模型,从Ruby的Unicorn项目移植而来。 Gunicorn服务器与许多Web框架广泛兼容,轻松服务器资源并且速度相当快。

Gunicorn Green Unicorn(绿色独角兽)是一个用于 UNIX 的 Python WSGI HTTP 服务器。它是一个前叉工作者模型,从 Ruby 的 Unicorn 项目移植而来。 Gunicorn 服务器与许多 Web 框架广泛兼容,简单实现,轻松服务器资源并且速度相当快。

Gunicorn

功能

  • 本机支持 WSGI,web2py,Django 和 Paster
  • 自动化工作流程管理
  • 简单的 Python 配置
  • 多个工人配置
  • 各种服务器挂钩,可扩展性
  • 兼容 Python 2.6+和 Python 3.2+

Gunicorn 是一个 unix 上被广泛使用的高性能的 Python WSGI UNIX HTTP Server。和大多数的 web 框架兼容,并具有实现简单,轻量级,高性能等特点。

Gunicorn 服务器作为 wsgi app 的容器,能够与各种 Web 框架兼容(flask,django 等),得益于 gevent 等技术,使用 Gunicorn 能够在基本不改变 wsgi app 代码的前提下,大幅度提高 wsgi app 的性能。

服务模型(Server Model)

Gunicorn 是基于 pre-fork 模型的。也就意味着有一个中心管理进程( master process )用来管理 worker 进程集合。Master 从不知道任何关于客户端的信息。所有的请求和响应处理都是由 worker 进程来处理的。

Master(管理者)

主程序是一个简单的循环,监听各种信号以及相应的响应进程。master 管理着正在运行的 worker 集合,通过监听各种信号比如 TTIN, TTOU, and CHLD. TTIN and TTOU 响应的增加和减少 worker 的数目。CHLD 信号表明一个子进程已经结束了,在这种情况下 master 会自动的重启失败的 worker。

worker

woker 有很多种,包括:ggevent、geventlet、gtornado 等等。

这里主要分析 ggevent。每个 ggevent worker 启动的时候会启动多个 server 对象:worker 首先为每个 listener 创建一个 server 对象(注:为什么是一组 listener,因为 gunicorn 可以绑定一组地址,每个地址对于一个 listener),每个 server 对象都有运行在一个单独的 gevent pool 对象中。真正等待链接和处理链接的操作是在 server 对象中进行的。

收藏 0个人收藏
走进科技生活方式

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • Python

    Python 可以干什么

    Python是一种广泛使用的高级编程语言,属于通用型编程语言,是完全面向对象的语言。函数、模块、数字、字符串都是对象。经常被用于Web开发、GUI开发、操作系统、科学计算等应用范围。
  • Python

    Python可以应用在哪些领域

    常规软件开发、科学计、自动化运维、云计算、WEB开发、网络爬虫、数据分析、人工智能,Python可以在这些领域都可应用到。
  • Python

    Python语言有哪些特点

    简单易学、面向对象、可移植性、解释性、高级语言、可扩展性、丰富的库、规范的代码、开放源码软件。
  • Pyston

    Pyston是什么

    Pyston几乎支持所有Python语义。另外还实现了许多用法,这些用法一般不认为是Python的特性,但一些常见的第三方库中会用到。如支持内置函数中所有的参数组合,或一些技巧性的用法,如修改sys.module来改变一条导入语句的结果。
  • Micropython

    MicroPython是什么

    MicroPython 是 Python 3 编程语言的一个完整软件实现,用 C 语言编写,被优化于运行在微控制器之上。运行在微控制器硬件之上的完全的 Python 编译器和运行时系统。提供给用户一个交互式提示符来立即执行所支持的命令。
  • GNU Bazaar

    GNU Bazaar是什么

    GNU Bazaar是分布式客户端-服务器版本控制系统。Bazaar可以由从事本地内容多个分支工作的单个开发人员使用,也可以由跨网络协作的团队使用。Bazaar是用Python编程语言编写。