start_http_server.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import os
  2. import socket
  3. from http.server import HTTPServer, SimpleHTTPRequestHandler
  4. root_dir = os.path.join(os.path.dirname((os.path.dirname(__file__))))
  5. web_dir = os.path.join(os.path.dirname(__file__), 'static')
  6. os.chdir(web_dir)
  7. class MultiAddressServer(HTTPServer):
  8. def server_bind(self):
  9. self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  10. self.socket.bind(self.server_address)
  11. class LoggingHTTPRequestHandler(SimpleHTTPRequestHandler):
  12. def __init__(self, *args, **kwargs):
  13. try:
  14. # try to prevent exception in internal getcwd()
  15. os.chdir(root_dir)
  16. os.chdir(web_dir)
  17. super().__init__(*args, **kwargs)
  18. except FileNotFoundError:
  19. print(f"Error: Directory '{web_dir}' not found.")
  20. raise
  21. def log_message(self, format, *args):
  22. print(
  23. f'Request received: {self.address_string()} - {self.log_date_time_string()} - {format % args}'
  24. )
  25. handler = LoggingHTTPRequestHandler
  26. # Start the server
  27. server = MultiAddressServer(('', 8000), handler)
  28. print('Server running on http://localhost:8000 and http://127.0.0.1:8000')
  29. server.serve_forever()