前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django 1.8 官方文档翻译: 6-6-2 如何使用WSGI 部署

django 1.8 官方文档翻译: 6-6-2 如何使用WSGI 部署

作者头像
ApacheCN_飞龙
发布2022-11-27 15:14:51
3640
发布2022-11-27 15:14:51
举报
文章被收录于专栏:信数据得永生信数据得永生

如何使用WSGI 部署

Django 首要的部署平台是WSGI,它是Python Web 服务器和应用的标准。

Django 的startproject 管理命名为你设置一个简单的默认WSGI 配置,你可以根据你项目的需要做调整并指定任何与WSGI 兼容的应用服务器使用。

Django 包含以下WSGI 服务器的入门文档:

application 对象

使用WSGI 部署的核心概览是application 可调用对象,应用服务器使用它来与你的代码进行交换。在Python 模块中,它通常一个名为application 的对象提供给服务器使用。

startproject 命令创建一个<project_name>/wsgi.py 文件,它就包含这样一个application 可调用对象。

它既可用于Django 的开发服务器,也可以用于线上WSGI 的部署。

WSGI 服务器从它们的配置中获得application 可调用对象的路径。Django 内建的服务器,叫做runserverrunfcgi 命令,是从WSGI_APPLICATION 设置中读取它。默认情况下,它设置为<project_name>.wsgi.application,指向<project_name>/wsgi.py 中的application 可调用对象。

配置settings 模块

当WSGI 服务器加载你的应用时,Django 需要导入settings 模块 —— 这里是你的全部应用定义的地方。

Django 使用DJANGO_SETTINGS_MODULE 环境变量来定位settings 模块。它包含settings 模块的路径,以点分法表示。对于开发环境和线上环境,你可以使用不同的值;这完全取决于你如何组织你的settings。

如果这个变量没有设置,默认的wsgi.py 设置为mysite.settings,其中mysite 为你的项目的名称。这是runserver 如何找到默认的settings 文件的机制。

注 因为环境变量是进程范围的,当你在同一个进程中运行多个Django 站点时,它将不能工作。使用mod_wsgi 就是这个情况。 为了避免这个问题,可以使用mod_wsgi 的守护进程模式,让每个站点位于它自己的守护进程中,或者在wsgi.py中通过强制使用os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" 来覆盖这个值。

运用WSGI 中间件

你可以简单地封装application 对象来运用 WSGI 中间件。 例如,你可以在wsgi.py 的底下添加以下这些行:

代码语言:javascript
复制
from helloworld.wsgi import HelloWorldApplication
application = HelloWorldApplication(application)

如果你结合使用 Django 的application 与另外一个WSGI application 框架,你还可以替换Django WSGI 的application 为一个自定义的WSGI application。

注 某些第三方的WSGI 中间件在处理完一个请求后不调用响应对象上的close —— most notably Sentry’s error reporting middleware up to version 2.0.7。这些情况下,不会发送request_finished 信号。这可能导致数据库和memcache 服务的空闲连接。

译者:Django 文档协作翻译小组,原文:WSGI servers。 本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。 Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何使用WSGI 部署
    • application 对象
      • 配置settings 模块
        • 运用WSGI 中间件
        相关产品与服务
        消息队列 TDMQ
        消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档