Python开发

文章目录

WSGI

WSGI主要规定了服务器和应用程序间的接口
在这里插入图片描述
浏览器发起请求,wsgi Server必须认识http协议的报文,并解析封装到environ,同时调用WSGI APP(函数),参数就是environ的数据,处理完之后。结果就是返回的正文(response)给wsgi server,wsgi server还给wsgi app一个函数,调用一下,返回状态码status和头。wsgi server给正文打包http response报文,浏览器解开(html),并渲染
我们要关心的是app,逻辑处理我们来完成,server来调用就行了

wsgiref

wsgiref是一个简单的wsgi server服务器

def demo_app(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")]

参数是http请求的包和返回报文和头的函数
这就是app做的事情,返回之前必须知道头和状态码的信息

from wsgiref.simple_server import make_server,demo_app
host = '127.0.0.1' 
port = 9898
server = make_server(host,port,demo_app)
server.serve_forever()

WSGI服务器的作用:
监听HTTP
接收浏览器http请求
调用app,将environ数据和start_response方法传入
将app返回的正文包装为http响应报文返回浏览器

APP编写

from wsgiref.simple_server import make_server,demo_app
host = '127.0.0.1'
port = 9898
def myapp(environ:dict,start_response):
    print(environ.items())
    print(environ['PATH_INFO'])
    print(environ['HTTP_USER_AGENT'])
    print(environ['HTTP_HOST'])
    print(environ['QUERY_STRING'])
    print(environ['REQUEST_METHOD'])

    start_response("200 OK", [('Content-Type', 'text/plain; charset=utf-8')])
    yield b'hello'
server = make_server(host,port,myapp)
server.serve_forever()

在这里插入图片描述
WSGI APP:
遵从WSGI协议
本身是一个可调用对象
调用start_response,返回响应头
返回包含正文第可迭代对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值