Seção 20 orientada a objetos em servidor web multi-processo

importação tomada
 importação multiprocessamento
 importação re 

classe WSGIServer (): 

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

    def tcp_serve (auto, resp_socket): 
        recv_data = resp_socket.recv (1024) .decode ( ' utf-8 ') 
        Request_lines = recv_data.splitlines () 
        file_name = '' 
        RET = re.match (P & lt " [^ /] + (/ [^] *) " , request_lines [0])
         SE RET: 
            file_name . = Ret.group (1 )
             Imprimir (file_name)
             IF file_name == " / " : 
                file_name = ' \ index.html ' 

        caminho = R & lt ' e: \\ 360Downloads Software \\ \\ \\ nova pasta tmag_23_Infinity nova pasta \\ ' +file_name
         tentativa : 
            f = open (caminho, ' rb ' )
         , exceto : 
            resp_data = ' HTTP / 1.1 200 OK \ r \ n ' + " \ r \ n " + ' ..... arquivo não encontrar .... ' 
            resp_socket.send (resp_data.encode ( ' utf-8 ' ))
         outro : 
            html_content = f.read () 
            f.close () 
            resp_data = ' HTTP / 1.1 200 OK \ r \ n ' +" \ R & lt \ n- " 
            resp_socket.send (resp_data.encode ( ' UTF-8. ' )) 
            Resp_socket.send (html_content) 
        resp_socket.close () 

    DEF run_forver (auto):
         o tempo Verdadeiro:     
            resp_socket, resp_addr = self.web_socket.accept () 
            a p = multiprocessing.Process (target = self.tcp_serve, args = (resp_socket,)) 
            p.start () 
            # Como Ubuntu também precisa fechar o socket, relacionados com o descritor de arquivo, ou atualizar a página não tem fora 
            resp_socket.close ()
         # self.web_socket.close () 

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


se  __name__ == ' __main__ ' : 
    main ()

 

Acho que você gosta

Origin www.cnblogs.com/kogmaw/p/12602523.html
Recomendado
Clasificación