全部主题 | Blog | 时讯 | @fullstackpython | Facebook | 源码
Green Unicorn (Gunicorn)
Green Unicorn,通过常简称“Gunicorn”,它是 Web 服务器网关接口(WSGI)服务器的一种实现,通常用于运行 Python web 应用。
Gunicorn 为何很重更要?
Gunicorn 是众多 WSGI 服务器实现之一,但它特别重要,因为它稳定,是web 应用部署 中常用组成部分,它驱动着一些世界上最大的基于 Python 的 web 应用,例如 Instagram。
Gunicorn 实现了 PEP3333 WSGI 服务器标准规范 接口,这样它就可以运行那些实现了应用接口的 Python web 应用。例如,假设你使用了诸如 Django、Flask、或 Bottle 这样的 web 框架 编写了一个 web 应用,那么你的应用就实现了 WSGI 规范。
Gunicorn 是WSGI 服务器 概念的一种实现。在部署 章节学习如何将这些部分组合在一起,或者查看所有主题的目录。
Gunicorn 如何知道怎样运行我的 web 应用?
Gunicorn 根据在 WSGI 服务器和 WSGI 兼容的 web 应用之间的钩子知道如何运行 web 应用。
这儿有个例子,它说明了如何通过 Gunicorn 运行一个典型的 Django web 应用。 我们将以 dango_defaults 为例。在 django_defaults 项目目录中,有一个短的 wsgi.py 文件含有下面的内容:
- """
- WSGI config for django_defaults project.
- It exposes the WSGI callable as a module-level variable named ``application``.
- For more information on this file, see
- https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/
- """
- import os
- from django.core.wsgi import get_wsgi_application
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_defaults.settings")
- application = get_wsgi_application()
wsgi.py
文件是在 Django 项目首次创建时通过 django-admin.py startproject
命令生成的。 Django 通过 wsgi.py
文件暴露了一个 application
变量,这样 WSGI 服务器就可以使用 application
作为一个钩子来运行 web 应用。 下图是对这个情况的直观展示:
什么叫做“预分叉”工作者模型?
相对一个工作者模型结构,Gunicorn 是基于预分叉工作模型的。预分叉工作模型是指主线程使工作者自旋处理请求,却不控制这些工作者如何执行请求处理任务。每个工作者都独立于控制者。
Gunicorn 相关资源
- 在 Full Stack Python 博客 中有三篇针对框架的文章说明了如何在 Ubuntu 上配置 Gunicorn 用于开发:
- 在 Ubuntu 16.04 LTS 上设置 Python 3、Django 和 Gunicorn。
- 如何在 Ubuntu 16.04 LTS 上设置 Python3、Flask 和 Green Unicorn。
- 在 Ubuntu 16.04 LTS 上配置 Python 3、Bottle 和 Gunicorn 用于开发。
Gunicorn 作为你的 Django 开发服务器 是一个短篇,含有一些使用 Gunicorn 用于本地应用开发的优秀建议。
全栈 Python 部署指南 提供了详细的指导步骤用于将 Gunicorn 作为一个完整 Python web 应用部署的一部分。
Flask 在 Nginx 和 Gunicorn 上 在部署中将 Gunicorn 和 Nginx web 服务器 在一起为一个 Flask 应用提供服务。
问题“使用 Gunicorn 运行 Django 的最佳实践是什么?”的答案 给出了一些在部署中 Gunicorn 如何调用 Django 提供的可调用应用变量的细微差别。
如何在 FreeBSD 10.2 上安装 Django 和 Gunicorn 以及 Nginx 是一个针对 FreeBSD 的教程,相对于 Ubuntu 和 CentOS 的教程,这个教程中的演示并不常见。
如何在 Ubuntu 14.04 上使用 Flask、Gunicorn 和 Nginx 制作一个可扩展的 Python web 应用 和 在 Ubuntu 上部署一个 Flask 应用), 这两篇文章都提供了在 Flask web 应用中设置使用 Gunicorn 的方法。 每篇教程都没有提供更多的说明,但它们在你使用 Ubuntu 遇到问题时仍然是非常好的准确参考。
使用 Supervisor 控制一个虚拟环境,并在该虚拟环境中设置 Django、Nginx 和 Gunicorn 是一个 GitHub Gist,非常好地说明了为何需要设置 virtualenv 以及在你部署时应当注意什么。
你还想学习什么样的部署知识?
什么是 Docker 以及如何使它适合 Python 部署?
想找到一个完整的,一步一步的部署方案吗?请看《The Full Stack Python Guide to Deployments》.
邮件获取更新
目录
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 项目