基于wsgiref模块的web服务端

基于wsgiref模块

关键词:wsgiref、run方法调用

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/9/24 22:10
# @Author  : 小梁同学@0311
# @File    : 基于wsgiref模块.py
# @Software: PyCharm

from wsgiref.simple_server import make_server


def run(env, response):
    """
    :param env: 请求相关的所有数据
    :param response: 响应相关的所有数据
    :return: 返回给浏览器的数据
    """
    response('200 OK', [])  # 响应首行 响应头
    print(env)  # 大字典  wsgiref模块帮你处理好http格式的数据 封装成了字典让你更加方便的操作
    # 从env中取  env里面有个 PATH_INFO的键,这个是记录用户输入访问的路径后缀
    current_path = env.get('PATH_INFO')
    # return [b'hello wsgiref']

    if current_path == '/index':
        return [b'index']
    elif current_path == '/login':
        return [b'login']
    else:
        return [b'404 error']


if __name__ == '__main__':
    server = make_server('127.0.0.1', 8080, run)  # 可以放函数 也可以放对象,注意都不要在这加括号
    '''
    会实时监听127.0.0.1:8080地址 
    只要有客户端来了都会交给run函数处理,并且自动加括号() 触发函数体的运行
    
    对象+()  触发产生对象类里面的__call__方法
        flask启动源码
            make_server('127.0.0.1', 8080, obj)
            __call__
    '''
    server.serve_forever()  # 启动服务端


'''
总结:
1、没有一行socket代码书写 
2、处理http协议的代码也不用写
3、直接专注于获取数据 然后书写业务逻辑

不足:
不同url路径,对应功能有些越多,且越来越长
'''

上一篇:java.util.ServiceLoader使用


下一篇:Django请求生命周期流程