Skip to content

Instantly share code, notes, and snippets.

@friek
Created July 6, 2015 08:19
Show Gist options
  • Select an option

  • Save friek/007b9d230ec54b667108 to your computer and use it in GitHub Desktop.

Select an option

Save friek/007b9d230ec54b667108 to your computer and use it in GitHub Desktop.
Python SimpleHTTPServer with address reusage
#!/usr/bin/env python
import SimpleHTTPServer
import SocketServer
import sys
import os
import getopt
def main(argv):
try:
opts, args = getopt.getopt(argv[1:], 'p:hd:')
except getopt.GetoptError, err:
print_usage(argv[0], err.message)
sys.exit(1)
serve_dir = os.getcwd()
port = 8000
for opt, arg in opts:
if opt == '-p':
port = int(arg)
elif opt == '-d':
serve_dir = arg
elif opt == '-h':
print_usage(argv[0])
sys.exit(1)
run_http_server(serve_dir, port)
def run_http_server(directory, port):
os.chdir(directory)
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", port), Handler, bind_and_activate=False)
httpd.allow_reuse_address = True
httpd.server_bind()
httpd.server_activate()
print("serving {0} at port {1}".format(directory, port))
httpd.serve_forever()
def print_usage(argv0, err_msg=None):
if err_msg is not None:
print("\nERROR: {0}".format(err_msg))
print("\nUsage: {0} [-p port] [-d directory]\n".format(argv0))
print("\t-p port: port to serve requests on (default 8000)")
print("\t-d dir : directory to serve contents from (default current directory)")
print("")
if __name__ == '__main__':
main(sys.argv)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment