WSGI

WSGI全称为Web Server Gateway Interface,WSGI允许web框架和web服务器分开,可以混合匹配web服务器和web框架,选择一个适合的配对。比如,可以在Gunicorn 或者 Nginx/uWSGI 或者 Waitress上运行 Django, Flask, 或 Pyramid。

web服务器必须具备wsgi接口,所有的现代Python web框架都以具备wsgi接口,它不让你对代码作修改就能使服务器和web框架协同工作。

其他语言也有类似的接口:java中的servlet

定义WSGI接口

WSGI接口的定义非常简单,它只是要求web开发者实现一个函数,就可以相应http请求。我们来看一个最简单的Web版本的“Hello, World!”:

def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return 'Hello World!'

上面的 application() 函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:

  • environ:一个包含所有http请求信息的一个字典对象。
  • start_response:一个发送HTTP响应的函数,它接收两个参数:
    • http响应码。
    • 一组list表示的HTTP header,每个header用一个包含两个str的tuple表示。

函数的返回值Hello, World!将作为HTTP响应的Body发送给浏览器。

application()函数必须由WSGI服务器来调用。

初识WSGI接口的更多相关文章

  1. python使用WSGI接口实现简单网页

    Python Web 介绍 Python的Web服务器分为服务器程序和应用程序.服务器程序负责接收客户端的请求发送给应用程序,应用程序负责处理请求返回给服务器程序.为了方便应用程序的开发,我们把常用的 ...

  2. Python WSGI接口

    WSGI(Web Server Gateway Interface 或 Python Web Server Gateway Interface ),是为 Python 语言定义的 Web 服务器与 W ...

  3. python之web框架(2):了解WSGI接口

    python之web框架(2):了解WSGI接口 1.什么是wsgi接口: wsgi:Web Service Gateway Interface.它不是模块,而只是一种规范,方便web服务器和各种框架 ...

  4. python web应用--WSGI接口(二)

    WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求.我们来看一个最简单的Web版本的“Hello, web!”: 1 # server.py 2 # 从wsgiref模 ...

  5. WSGI接口

    web server gateway interface:将http请求,响应格式封装起来,让我们可以专心的用python编写web业务. WSGI接口定义的非常简单,它只要求开发者实现一个函数,就可 ...

  6. python的WSGI接口

    WSGI:Web Server Gateway Interface. WSGI是为python语言定义的web服务器和web应用程序或框架之间的一种简单而实用的接口.wsgi是一个web组件的接口规范 ...

  7. 初识C#接口

    C# 接口(Interface) 接口定义了所有类继承接口时应遵循的语法合同.接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分. 接 ...

  8. 初识IStructuralEquatable接口

    System.Collections.IStructuralEquatable 是 .NET Framework 4.5 新引入的一个接口,位于System.Runtime.dll程序集中. MSDN ...

  9. Android Multimedia框架总结(十三)CodeC部分之OpenMAX框架初识及接口与适配层实现

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629598 前言:上篇中介绍O ...

随机推荐

  1. 网站快速收录/站点快速收录/seo快排技术/seo快速排名/泛域名快速收录/泛目录快速收录

    泛目录技术是目前最快速最有效的办法,增加站点的收录方面,这里推荐莲花泛目录 莲花泛目录,完善的技术支持,代码亲自编写,独立研发.业界领先. (这个是seo关键词,请无视,直接看下面的泛目程序介绍)网站 ...

  2. 部署Hadoop2.0高性能集群

    废话不多说直接实战,部署Hadoop高性能集群: 拓扑图: 一.实验前期环境准备: 1.三台主机配置hosts文件:(复制到另外两台主机上) [root@tiandong63 ~]# more /et ...

  3. Java写入的常用技巧(二)

    在一般从流接收数据写入介质的场景中,大部分存在每批次数据较小,导致小文件较多的问题. 一般考虑设置一个缓冲池,将多个批次的数据先缓冲进去,达到一定大小,再一次性批量写入 //公共缓冲池和缓冲池大小,如 ...

  4. Python list 遇到的问题

    1.list“+” 运算 <list += > diff. <ndarray +=> list1 += list2是追加,而不是加法运算 list1 = [0,0,0] lis ...

  5. axios的get请求无法设置Content-Type

    最近在与后端的项目对接中,接口工具使用了axios这个东西.怎么说那 ,反正有很多坑,在后端的请求中要设置GET 请求中要设置header中的Content-Type为application/json ...

  6. Ceph 存储集群搭建

    前言 Ceph 分布式存储系统,在企业中应用面较广 初步了解并学会使用很有必要 一.简介 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统.它具有高可靠性.安装方便.管理简便.能够 ...

  7. JS初探

    如何实现点击后,有下拉菜单的效果呢? 写一个JS效果的步骤: 一.先实现布局 二.实现原理 三.了解JS语法 1.JS获取效果元素 2.知道是什么事件(鼠标事件.键盘事件.表单事件.系统事件.自定义事 ...

  8. springBoot2.X---过滤器,监听器,拦截器

    过滤器,监听器,拦截器 一.画图理解 过滤器(filter),监听器(listener),拦截器(Interceptor). 通过两幅图我们可以理解拦截器和过滤器的特点 1.过滤器 过滤器是在请求进入 ...

  9. 【论文学习】Is the deconvolution layer the same as a convolutional layer

    结合上升采样upsample和卷积操作.Sub-piexl convolution. Efficient Sub-pixel-convolutional-layers. LR network,即低分辨 ...

  10. vue 动态组件,传递参数

    <template> <div class="top"> <div class='nav'> <ul class='navHader'&g ...