Skip to content

Instantly share code, notes, and snippets.

@codification
Created November 25, 2011 10:16
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save codification/1393204 to your computer and use it in GitHub Desktop.
Save codification/1393204 to your computer and use it in GitHub Desktop.
Python HTTP PUT test server
import sys
import signal
from threading import Thread
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class PUTHandler(BaseHTTPRequestHandler):
def do_PUT(self):
print "----- SOMETHING WAS PUT!! ------"
print self.headers
length = int(self.headers['Content-Length'])
content = self.rfile.read(length)
self.send_response(200)
print content
def run_on(port):
print("Starting a server on port %i" % port)
server_address = ('localhost', port)
httpd = HTTPServer(server_address, PUTHandler)
httpd.serve_forever()
if __name__ == "__main__":
ports = [int(arg) for arg in sys.argv[1:]]
for port_number in ports:
server = Thread(target=run_on, args=[port_number])
server.daemon = True # Do not make us wait for you to exit
server.start()
signal.pause() # Wait for interrupt signal, e.g. KeyboardInterrupt
Copy link

ghost commented Jun 23, 2017

So this just spits out garbage to STDOUT? That's really all it does?

@danya02
Copy link

danya02 commented Jun 24, 2017

@jwhite530 Not just any garbage. GIGO is in full effect here.

@huntingriver
Copy link

huntingriver commented Feb 4, 2022

Thanks, danya02... After self.send_response(), you should also need: self.end_headers()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment