Skip to content

Instantly share code, notes, and snippets.

@aronatkins
Last active September 18, 2015 17:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aronatkins/e13b2962603443cc5d21 to your computer and use it in GitHub Desktop.
Save aronatkins/e13b2962603443cc5d21 to your computer and use it in GitHub Desktop.
An HTTP server that occasionally sends data to a long-lived request.
#!/usr/bin/python
import BaseHTTPServer
import SocketServer
import argparse
import time
import urlparse
parser = argparse.ArgumentParser(description='An HTTP server that occasionally sends data to a long-lived request.')
parser.add_argument('--port', type = int, default = 8080,
help = 'HTTP listen port. (default: %(default)s)')
args = parser.parse_args()
class SlowAndSteady(BaseHTTPServer.BaseHTTPRequestHandler):
protocol_version = 'HTTP/1.1'
def do_GET(self) :
query = urlparse.parse_qs(urlparse.urlparse(self.path).query)
size = int(query.get('size', [10])[0])
sleep = float(query.get('sleep', [0])[0])
chunks = int(query.get('chunks', [1])[0])
self.send_response(200)
self.end_headers()
chunk = 'h' * size
for i in range(chunks) :
if i > 0 :
# don't sleep before the first chunk
time.sleep(sleep)
print i
self.wfile.write("i=%d\n" % i)
self.wfile.write(chunk)
self.wfile.write("\ni=%d\n" % i)
class SlowServer(SocketServer.TCPServer) :
allow_reuse_address = True
httpd = SlowServer(('', args.port), SlowAndSteady)
print 'serving at port', args.port
httpd.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment