第二十节 多进程面对对象web服务器
Posted kog_maw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二十节 多进程面对对象web服务器相关的知识,希望对你有一定的参考价值。
import socket import multiprocessing import re 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 = r‘E:\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服务器的主要内容,如果未能解决你的问题,请参考以下文章