Skip to content

Instantly share code, notes, and snippets.

@jussih
Created January 8, 2020 07:41
Show Gist options
  • Save jussih/f0eae9dc9f4f238e872001b7cee7f432 to your computer and use it in GitHub Desktop.
Save jussih/f0eae9dc9f4f238e872001b7cee7f432 to your computer and use it in GitHub Desktop.
Python simple http server
# -*- coding: utf-8 -*-
import argparse
import http.server
import socketserver
PORT = 8080
def get_handler_class(dir=None):
class Handler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(directory=dir, *args, **kwargs)
Handler.extensions_map = {
'.manifest': 'text/cache-manifest',
'.html': 'text/html',
'.png': 'image/png',
'.jpg': 'image/jpg',
'.svg': 'image/svg+xml',
'.css': 'text/css',
'.js': 'application/x-javascript',
'.mjs': 'text/javascript',
'': 'application/octet-stream', # Default
}
return Handler
def serve(handler, port):
httpd = socketserver.ThreadingTCPServer(("", port), handler)
httpd.serve_forever()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--dir', type=str, default=None,
help='serve directory')
parser.add_argument('--port', type=int, default=8080,
help='serve port')
args = parser.parse_args()
handler = get_handler_class(dir=args.dir)
dir = args.dir or "."
print(f"serving {dir} at port {args.port}")
serve(handler, args.port)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment