Path: blob/master/languages/python/asyncio_examples/simple_server.py
1240 views
"""1Simple HTTP Server with GET that waits for given seconds.2"""34from http.server import BaseHTTPRequestHandler, HTTPServer5from socketserver import ThreadingMixIn6import time78ENCODING = 'utf-8'91011class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):12"""Simple multi-threaded HTTP Server."""13pass141516class MyRequestHandler(BaseHTTPRequestHandler):17"""Very simple request handler. Only supports GET."""1819def do_GET(self):20"""Respond after seconds given in path.21"""22try:23seconds = float(self.path[1:])24except ValueError:25seconds = 0.02627if seconds < 0:28seconds = 0.02930text = "Waited for {:4.2f} seconds.\nThat's all.\n"31msg = text.format(seconds).encode(ENCODING)32time.sleep(seconds)3334self.send_response(200)35self.send_header("Content-type", "text/plain; charset=utf-8")36self.send_header("Content-length", str(len(msg)))37self.end_headers()38self.wfile.write(msg)394041def run(server_class=ThreadingHTTPServer,42handler_class=MyRequestHandler,43port=8888):44"""Run the simple server on a given port."""45server_address = ('', port)46httpd = server_class(server_address, handler_class)47print(("Serving from port {}...".format(port)))48httpd.serve_forever()495051if __name__ == '__main__':52run()535455