Skip to content

Instantly share code, notes, and snippets.

@attakei
Created October 25, 2016 14:10
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 attakei/c09232241c5a24b4206c7f4758fe8b75 to your computer and use it in GitHub Desktop.
Save attakei/c09232241c5a24b4206c7f4758fe8b75 to your computer and use it in GitHub Desktop.
Only once response HTTP server
#!/usr/bin/env python
from http.server import HTTPServer, SimpleHTTPRequestHandler
import signal
import sys
import os
class OnceHttpServer(HTTPServer):
def shutdown_by_signal(self, sig_num, frame):
self.server_close()
sys.exit(0)
def process_request(self, request, client_address):
super().process_request(request, client_address)
signal.setitimer(signal.ITIMER_REAL, 0.5, 0.5)
def run(server_class=OnceHttpServer, handler_class=SimpleHTTPRequestHandler):
server_address = ('0.0.0.0', int(os.environ.get('PORT', 8000)))
httpd = server_class(server_address, SimpleHTTPRequestHandler)
signal.signal(signal.SIGALRM, httpd.shutdown_by_signal)
httpd.serve_forever(2)
if __name__ == '__main__':
run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment