文档章节

为wsgiref实现的WSGI服务器编写处理函数

乐搏学院
 乐搏学院
发布于 2017/02/24 16:13
字数 669
阅读 18
收藏 0

简单介绍:

1. 浏览器发送一个HTTP请求

2. 服务器收到请求,生成HTML文档

3. 服务器把HTML文档作为HTTP响应的BODY发送给浏览器

4. 浏览器收到HTTP响应,从HTTP BODY取出HTML文档并显示

说明: 如上即Web应用本质,最简单的就是把HTML文件保存好,利用HTTP服务器软件,接收用户请求,从文件读取HTML并返回,常见的静态服务器即如此,而要实现动态生成HTML,服务器软件不可能为我们生成,但服务器软件基本都支持了WSGI(WEB网关接口)协议,使得我们专心用PY编写WEB业务,而不需要关心接受请求/处理请求/发送请求的底层实现

 

接口规范:

wKioL1gEOCTzvqh1AADw8d97wac667.png

1

2

3

def app(environ, start_response):

    start_response('200 OK', [('Content-Type''text/html')])

    return '<h1>Hello, web!</h1>'

说明: 接口定义非常简单,只需要一个接受两个参数(environ为包含HTTP请求信息的dict,start_response为一个回调函数主要用于发送响应头部信息,接受两个参数第一个是响应码,第二个是头部组成的元组列表,可以包含多个头部信息,但是只能调用一次),return返回的是body体

注意: 接口定义了但是只有被调用才有意义,有很多符合规范WSGI规范的服务器,PY为我们提供了一个符合规范但专用于测试的WSGI服务器wsgiref,可以快速方便测试

 

快速安装:

pip install --upgrade wsgiref

 

完整代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

#

# Authors: limanman

# OsChina: http://xmdevops.blog.51cto.com/

# Purpose:

#

"""

# 说明: 导入公共模块

from wsgiref.simple_server import make_server

# 说明: 导入其它模块

def app(environ, start_response):

    start_response('200 OK', [('Content-Type''text/html')])

    return '<h1>Hello Word!</h1>'

if __name__ == '__main__':

    host = ''

    port = 8080

    http = make_server(host, port, app)

    print 'Serving http on port %s' % (port,)

    http.serve_forever()

说明: 无论多复杂的HTTP程序,入口都是WSGI处理函数,HTTP请求的所有输入信息都可以通过environ环境变量获取,HTTP响应都可以通过start_response()加上函数返回值作为Body,但是复杂的WEB应用程序,光靠WSGI函数处理还是太底层,所以涌现了许多出色的WEB框架来简化WEB开发.

 

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

 

本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1862566

© 著作权归作者所有

共有 人打赏支持
乐搏学院
粉丝 6
博文 526
码字总数 707467
作品 0
丰台
程序员
从零开始搭建论坛(二):Web服务器网关接口

在 从零开始搭建论坛(一):Web服务器与Web框架 中我们弄清楚了Web 服务器、Web 应用程序、Web框架的概念。对于 Python 来说,越来越多的 Web 框架面世,在给我们更多选择机会的同时,也限制...

selfboot
2016/08/07
0
0
Bottle源码阅读(一)

1. run的实现 所有的框架请求响应都基于一个原理 http请求 --> wsgi服务器 --> wsgi接口(实际就是框架中自定义实现的函数经过底层封装) --> 响应 可以参考廖雪峰的教程中关于wsgi接口的讲解 ...

whales
2017/02/19
0
0
13.python中web框架概念的引入。

一、什么是web框架? 框架,就是一个为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。 对于所有...

苏浩智
2017/06/12
0
0
深入理解 nova-api 的 WSGI

本文是 理解 WSGI 框架 的下篇,重点介绍 WSGI 框架下一些常用的 python module,并使用这些 module 编写一个类似 nova-api 里 WSGI 的简单样例,最后分析 nova 是如何使用这些 module 构建其...

koala bear
2013/10/18
0
0
网关协议

CGI CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,...

lls3018
2016/07/12
9
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx访问日志-日志切割-静态文件不记录日志和过期时间

nginx访问日志: vim /usr/local/nginx/conf/nginx.conf #搜索log_format 该字段定义日志格式,默认如下: #combined_realip日志格式的名字,可随意定义; 定义访问日志: 需在虚拟主机配置文...

ZHENG-JY
4分钟前
0
0
180.mariadb 主从复制

参考:https://blog.csdn.net/chengxuzaza/article/details/62042920 睡觉睡觉,明天写 1.效果 当主库中数据有变化的时候,从库就自动同步 2. 环境要求 至少两台 linux服务器 (教程:https...

Lucky_Me
13分钟前
0
0
erlng file id3v1 id3v1.1

%% ---%% Excerpted from "Programming Erlang",%% published by The Pragmatic Bookshelf.%% Copyrights apply to this code. It may not be used to create training material, %% ......

xueyuse0012
15分钟前
1
0
RabbitMq的安装

环境Centos6.5 32位 JDK 1.7.8 Jdk的卸载 rpm -qa|grep jdk yum –y remove 上边的安装包 JDK的安装 Rpm –ivh jdk安装包 配置环境变量 export JAVA_BIN=/usr/java/jdk1.7.0_80/bin export J......

DemonsI
19分钟前
0
0
http和https协议

HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,中文含义为“超文本传输协议在安全加密字层”,简单来说就是加密数据传输,通俗的说就是安全连接。 HTTPS安全超文本传输...

寰宇01
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部