title: Using SimpleHTTPServer for unit testing
body: <p>I'm writing a Python module that wraps out a certain web service API. It's all REST, so relatively straightforward to implement. </p>
  
  <p>However, I found a problem when it comes to unit testing: as I don't run the services I made this module for, I don't want to hammer them, but at the same time, I need to retrieve data to run my tests. I looked at SimpleHTTPServer, which would be OK. </p>
  
  <p>I solved part of the issue I had, but now, since I can't seem to terminate the thread, I get issues with "address already in use" when launching the test application more than once.</p>
  
  <p>Here's some sample code</p>
  
  <pre><code>PORT = 8001
  
  handler = SimpleHTTPServer.SimpleHTTPRequestHandler
  
  httpd = SocketServer.TCPServer(("", PORT), handler)
  
  httpd_thread = threading.Thread(target=httpd.serve_forever)
  httpd_thread.setDaemon(True)
  httpd_thread.start()
  
  api_data = urllib.urlopen("http://localhost:8001/post/index.json")
  print "Data start:"
  print json.load(api_data)
  </code></pre>
  
  <p>Where "index.json" is a mock JSON file I made which substitutes the real thing. How can I clean things gracefully after the program terminates?</p>