第20オブジェクト指向マルチプロセスWebサーバ

インポートソケット
 インポートマルチプロセッシング
 インポートのRE 

クラスてWSGIServer():

    DEF  __init__ (自己):
        self.web_socket = socket.socket(はsocket.AF_INET、socket.SOCK_STREAM)
        self.web_socket.setsockopt(socket.SOL_SOCKET、socket.SO_REUSEADDR、 1 
        自己.web_socket.bind((' 192.168.0.106 '、8080 ))
        self.web_socket.listen( 128 

    DEF tcp_serve(自己、resp_socket):
        recv_data = resp_socket.recv(1024).decode(' UTF-8 '
        Request_lines = recv_data.splitlines()
        FILE_NAME = ' 
        RET = re.match(R&LT " [^ /] +(/ [^] *)" 、request_lines [0])
         IF RET:
            FILE_NAME = ret.group(1 印刷(FILE_NAME)
             IF file_nameに== " / " 
                FILE_NAME = ' \ index.htmlを' 

        パス = R&LT ' E:\\ 360Downloadsソフトウェア\\ \\ \\新しいフォルダtmag_23_Infinity新しいフォルダ\\ ' +file_name
         試し
            F =オープン(パス、' RB ' を除い
            resp_data = ' HTTP / 1.1 200 OK \ rを\ nは' + " \ rを\ nは" + ' .....ファイルが見つかりません.... ' 
            resp_socket.send(resp_data.encode(' UTF-8 ' ))
         
            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(自己):
         一方TRUE:     
            resp_socket、resp_addr = self.web_socket.accept ()
            P- = multiprocessing.Process(対象= self.tcp_serve、引数= (resp_socket、))
            p.start() 
            のようにUbuntuはまた、ファイルディスクリプタに関連し、ソケットをクローズする必要がある、またはページを更新していませんアウト
            resp_socket.close()
        self.web_socket.close()

DEF :メイン()
    wsgi_server= てWSGIServer()
    wsgi_server.run_forver()


もし __name__ == ' __main__ ' 
    メイン()

 

おすすめ

転載: www.cnblogs.com/kogmaw/p/12602523.html