第二十二节 web服务器里集成了解析动态请求的功能

Posted kog_maw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二十二节 web服务器里集成了解析动态请求的功能相关的知识,希望对你有一定的参考价值。

import socket
import multiprocessing
import re

‘‘‘
WSGI协议
浏览器,http请求动态资源→web服务器(通过wsgi调用一个默认的application函数(字典, 函数名))
‘‘‘
class WSGIServer():

    def __init__(self):
        self.web_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.web_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.web_socket.bind((192.168.0.106,8080))
        self.web_socket.listen(128)    

    def tcp_serve(self, resp_socket):
        recv_data = resp_socket.recv(1024).decode(utf-8)
        request_lines = recv_data.splitlines()
        file_name = ‘‘
        ret = re.match(r"[^/]+(/[^ ]*)",request_lines[0])
        if ret:
            file_name=ret.group(1)
            print(file_name)
            if file_name == "\":
                file_name = \index.html

        path = rE:\360Downloads\Software\新建文件夹\新建文件夹\tmag_23_Infinity+file_name
        try:
            f=open(path,rb)
        except:
            resp_data = HTTP/1.1 200 OK
 + "
" + .....file not find....
            resp_socket.send(resp_data.encode(utf-8))
        else:
            html_content = f.read()
            f.close()
            resp_data = HTTP/1.1 200 OK
 + "
"
            resp_socket.send(resp_data.encode(utf-8))
            resp_socket.send(html_content)
        resp_socket.close()

    def run_forver(self):
        while True:    
            resp_socket, resp_addr = self.web_socket.accept()
            p = multiprocessing.Process(target=self.tcp_serve, args=(resp_socket,))
            p.start()
            # 同乌班图一样也需要关闭套接字,跟文件描述符有关,不然页面一直刷新不出来
            resp_socket.close()
        # self.web_socket.close()

def main():
    wsgi_server = WSGIServer()
    wsgi_server.run_forver()


if __name__ == __main__:
    main()

 

以上是关于第二十二节 web服务器里集成了解析动态请求的功能的主要内容,如果未能解决你的问题,请参考以下文章

第二十二节

第三百二十二节,web爬虫,requests请求

学习vue第二十二节,路由的基本使用方法

《PyInstaller打包实战指南》第二十二节 单文件模式打包Playwright

《PyInstaller打包实战指南》第二十二节 单文件模式打包Playwright

第二十二节 with标签使用详解