基础入门_Python-模块和包.为wsgiref实现的WSGI服务器编写处理函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础入门_Python-模块和包.为wsgiref实现的WSGI服务器编写处理函数?相关的知识,希望对你有一定的参考价值。

简单介绍:


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

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

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

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


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


接口规范:

技术分享

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


完整代码:


#!/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开发.


本文出自 “@Can Up and No BB...” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1862566

以上是关于基础入门_Python-模块和包.为wsgiref实现的WSGI服务器编写处理函数?的主要内容,如果未能解决你的问题,请参考以下文章

基础入门_Python-模块和包.深入Celery之节点管理/任务调度/任务追踪?

Python基础入门- Python模块和包

基础入门_Python-模块和包.Gevent异步/状态获取/超时设置/猴子补丁?

基础入门_Python-模块和包.运维开发中内建模块getopt的最佳实践?

基础入门_Python-模块和包.深入SQLAlchemy之SQLAlchemy ORM重构表?

基础入门_Python-模块和包.运维开发中chartdet编码检测的最佳实践?