Files
infix/test/infamy/file_server.py
T
2024-11-25 14:25:26 +01:00

29 lines
807 B
Python

"""
Basic file server over HTTP
"""
import concurrent.futures
import functools
import http.server
import socket
class FileServer(http.server.HTTPServer):
"""Open web server on (address, port) serving files from directory"""
class RequestHandler(http.server.SimpleHTTPRequestHandler):
def log_message(self, *args, **kwargs):
pass
address_family = socket.AF_INET6
def __init__(self, server_address, directory):
rh = functools.partial(FileServer.RequestHandler, directory=directory)
self.__tp = concurrent.futures.ThreadPoolExecutor(max_workers=1)
super().__init__(server_address, rh)
def __enter__(self):
self.__tp.submit(self.serve_forever)
def __exit__(self, _, __, ___):
self.shutdown()
self.__tp.shutdown()