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. 加载中..

相关推荐

  • Django

    Django,一个高级Python Web框架

    Django是一个由Python编写的开源Web框架,以其“不要重复自己”的设计哲学、强大的对象关系映射(ORM)、自动化管理界面、高效的安全措施和丰富的第三方库支持而闻名。它提供了一个全面的工具集,以支持快速开发高质量的Web应用,适合从小型项目到大型企业级应用。
  • Apache

    Apache,世界排名第一的开源Web服务器软件

    Apache是一款广受欢迎的开源Web服务器软件,以其模块化架构、高度可定制性和广泛的操作系统兼容性著称。它支持虚拟主机、SSL加密、多种编程语言,适用于各种规模的网站和应用。与Nginx相比,Apache在动态内容处理方面更加丰富,虽然在高并发处理上可能略逊一筹。
  • Windows 11

    Windows 11很快将利用GPU实现生成式AI

    微软与英伟达合作开发 TensorRT-LLM,旨在提升装备 RTX 显卡的 Windows 设备用户体验。新版本支持大型语言模型,简化 AI 工作负载处理。TensorRT-LLM 库可提升模型性能,提供 Python API,简化开发。AI Workbench 工具包助力 AI 模型开发。DirectML 增强功能加速 AI 模型,设立新性能标准。TensorRT-LLM 更新提升推断性能,扩展模型支持范围,促进 Windows 11 PC 上 AI 的发展。
  • Python 卸载 Python uninstallation

    如何在Mac上完全卸载Python

    Mac完全卸载Python先打开终端,输入python --version确认要卸载的版本;通过Homebrew安装的,使用brew uninstall python;系统自带或手动安装使用sudo rm -rf命令删除Python 目录。
  • Python 卸载 Python uninstallation

    Python卸载过程中发生的严重错误怎么解决

    卸载Python时发生错误可以通过控制面板卸载,或使用安装程序进行卸载,清理残留文件,使用第三方卸载工具,清理注册表,重启并重试,安全模式下卸载,检查系统问题,创建新用户账户,恢复或重置系统等方法解决。
  • PDF 翻译 PDF translation

    如何将PDF翻译成另一种语言

    PDF翻译可使用在线翻译工具如百度翻译、DeepL等,方便快捷但可能不够精准;用专业翻译软件如ABBYY FineReader,翻译质量更高但需付费;需要极高准确度的翻译,手动翻译是最好的选择;还可使用Python脚本等自动化翻译PDF。