Python 官方文档:入门教程 => 点击学习
目录WSGI基本原理1. WSGI处理过程2. WSGI示例3. WSGI WEB服务器和应用程序WSGI基本原理 1. WSGI处理过程 浏览器到WSGI Server:浏览器发送的请求会先到WSG
wsgiref简单示例
运行以下示例程序后,在浏览器中输入以http://127.0.0.1:9999/开头的随意一个url都可以看到返回结果。实例程序中所有url都会以同一个App进行处理,实际生产环境中不同的url肯定是需要映射到不同的App上的,但这部分本文不作讲解。
# wsgiref是python自带的内置库,它用来开发者对wsgi进行测试用的,不可以用在生产环境中
from wsgiref.simple_server import make_server, demo_app
# wsgi也是基于Socket server编写
# 默认情况下会将所有url都传入demo_app进行处理,具体可参考demo_app源码
# app参数可以是任何可调用对象,但是内部处理需要参考demo_app源码,即environ处理、start_response调用、返回值类型
ws = make_server('127.0.0.1', 9999, demo_app)
# 启动服务
ws.serve_forever()
demo_app源码
def demo_app(environ,start_response):
from io import StringIO
stdout = StringIO()
print("Hello world!", file=stdout)
print(file=stdout)
# environ是一个字典,包含了所有请求信息
h = sorted(environ.items())
for k,v in h:
print(k,'=',repr(v), file=stdout)
# return之前需要调用start_response设置响应头信息
start_response("200 OK", [('Content-Type','text/plain; charset=utf-8')])
return [stdout.getvalue().encode("utf-8")] # 一个可迭代对象,元素为byte类型,元素内容依据start_response中指定的Content-Type来指定
demo_app类定义的两种方式
# 第一种方式:定义类的__init__和__iter__方法,前者用来接收和处理environ和start_response,后者生成一个可迭代对象
# make_server中app参数只需传入类名即可
class ApplicationClass:
def __init__(self, environ, start_response):
self.e = environ
self.sr = start_response
def __iter__(self):
from io import StringIO
stdout = StringIO()
print("Hello world!", file=stdout)
print(file=stdout)
h = sorted(self.e.items())
for k, v in h:
print(k, '=', repr(v), file=stdout)
self.sr("200 OK", [('Content-Type', 'text/plain; charset=utf-8')])
yield from [stdout.getvalue().encode("utf-8")]
# 第二种方式:定义__call__方法,接收和处理environ和start_response,并返回一个可迭代对象
# make_server中app参数需要传入类的实例
class ApplicationInstance:
def __call__(self, environ, start_response):
from io import StringIO
stdout = StringIO()
print("Hello world!", file=stdout)
print(file=stdout)
h = sorted(environ.items())
for k, v in h:
print(k, '=', repr(v), file=stdout)
start_response("200 OK", [('Content-Type', 'text/plain; charset=utf-8')])
return [stdout.getvalue().encode("utf-8")]
WSGI web服务器
WSGI应用程序
以上就是Python 内置库wsgiref的使用(WSGI基础入门)的详细内容,更多关于python wsgiref的使用的资料请关注编程网其它相关文章!
--结束END--
本文标题: python 内置库wsgiref的使用(WSGI基础入门)
本文链接: https://lsjlt.com/news/10899.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0