Full Stack Python logo Full Stack Python

全部主题 | Blog | 时讯 | @fullstackpython | Facebook | 源码

Green Unicorn (Gunicorn)

Green Unicorn,通过常简称“Gunicorn”,它是 Web 服务器网关接口(WSGI)服务器的一种实现,通常用于运行 Python web 应用。

Official Green Unicorn (Gunicorn) logo.

Gunicorn 为何很重更要?

Gunicorn 是众多 WSGI 服务器实现之一,但它特别重要,因为它稳定,是web 应用部署 中常用组成部分,它驱动着一些世界上最大的基于 Python 的 web 应用,例如 Instagram

Gunicorn 实现了 PEP3333 WSGI 服务器标准规范 接口,这样它就可以运行那些实现了应用接口的 Python web 应用。例如,假设你使用了诸如 DjangoFlask、或 Bottle 这样的 web 框架 编写了一个 web 应用,那么你的应用就实现了 WSGI 规范。

Gunicorn 是WSGI 服务器 概念的一种实现。在部署 章节学习如何将这些部分组合在一起,或者查看所有主题的目录

Gunicorn 如何知道怎样运行我的 web 应用?

Gunicorn 根据在 WSGI 服务器和 WSGI 兼容的 web 应用之间的钩子知道如何运行 web 应用。

这儿有个例子,它说明了如何通过 Gunicorn 运行一个典型的 Django web 应用。 我们将以 dango_defaults 为例。在 django_defaults 项目目录中,有一个短的 wsgi.py 文件含有下面的内容:

  1. """
  2. WSGI config for django_defaults project.
  3.  
  4. It exposes the WSGI callable as a module-level variable named ``application``.
  5.  
  6. For more information on this file, see
  7. https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/
  8. """
  9.  
  10. import os
  11.  
  12. from django.core.wsgi import get_wsgi_application
  13.  
  14. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_defaults.settings")
  15.  
  16. application = get_wsgi_application()

wsgi.py 文件是在 Django 项目首次创建时通过 django-admin.py startproject 命令生成的。 Django 通过 wsgi.py 文件暴露了一个 application 变量,这样 WSGI 服务器就可以使用 application 作为一个钩子来运行 web 应用。 下图是对这个情况的直观展示:

Gunicorn WSGI server invoking a Django WSGI application.

什么叫做“预分叉”工作者模型?

相对一个工作者模型结构,Gunicorn 是基于预分叉工作模型的。预分叉工作模型是指主线程使工作者自旋处理请求,却不控制这些工作者如何执行请求处理任务。每个工作者都独立于控制者。

Gunicorn 相关资源

  • Full Stack Python 博客 中有三篇针对框架的文章说明了如何在 Ubuntu 上配置 Gunicorn 用于开发:

你还想学习什么样的部署知识?

服务器上的什么程序会运行 Python 应用代码?

什么是 Docker 以及如何使它适合 Python 部署?

给我展示裸机和虚拟化服务器方案。

#### 在这里注册以便每月能收到一份邮件资料,内容包含本站的主要更新、教程和 Python 书籍的打折码等。

The Full Stack Python Guide to Deployments 想找到一个完整的,一步一步的部署方案吗?请看《The Full Stack Python Guide to Deployments》.

邮件获取更新

##### 注册以便每月能收到一份邮件资料,内容包含本站的主要更新和 Python 教程。

目录

1. 简介学习编程为什么用 Python?Python 2 还是 3?企业 PythonPython CommunityBest Python Podcasts最佳 Python 资源最佳 Python 视频2. 开发环境VimEmacs3. 核心语言生成器推导式4. Web 开发Web 框架DjangoFlaskBottlePyramidMorepath其它 Web 框架Web 设计级联样式表 (CSS)JavaScriptWebSockets模板引擎Web 应用安全静态网站生成器Jinja25. 数据关系型数据库NoSQL 数据存储对象关系映射器PostgreSQLMySQLSQLite6. Web APIsAPI 集成API 的创建Twilio7. 部署服务器平台即服务(PaaS)操作系统Web 服务器WSGI 服务器源码控制应用程序依赖静态内容任务队列配置管理持续集成日志监控Web 分析Docker缓存微服务DevOpsNginxApache HTTP 服务器CaddyGreen Unicorn (Gunicorn)UbuntuPelicanLektorMkDocs8. 测试单元测试集成测试代码度量调试9. MetaBotsChange LogFuture DirectionsAbout the AuthorSQLAlchemyPeewee …或者显示全部目录内容.

Green Unicorn (Gunicorn)

重要的更新内容会通过 Twitter 账号@fullstackpython发布。


需要更加详细的教程吗?请看 《The Full Stack Python Guide to Deployments》。

Chapters

1. 简介2. 开发环境3. 核心语言4. Web 开发5. 数据6. Web APIs7. 部署 » Green Unicorn (Gunicorn) 8. 测试9. Meta …or view the full table of contents.


This site is based on Matt Makai's project Full Stack Python, thanks for his excellent work!

此网站由 @haiiiiiyun开源爱好者们 共同维护。 若发现错误或想贡献,请访问: Github fullstackpython.cn 项目