Wsgiserver 0.2 ^hot^ -
CMD ["python", "-m", "wsgiserver.server", "--host", "0.0.0.0", "--port", "8000"]
def __init__(self, host='127.0.0.1', port=8000, application=None): self.host = host self.port = port self.application = application self.server_socket = None self.running = False self.connections = [] def bind_and_listen(self): """Create and bind server socket""" self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.server_socket.bind((self.host, self.port)) self.server_socket.listen(5) self.server_socket.setblocking(False) def serve_forever(self): """Main server loop""" self.bind_and_listen() self.running = True print(f"Serving on http://self.host:self.port") while self.running: try: readable, _, _ = select.select([self.server_socket], [], [], 1) if readable: client_socket, addr = self.server_socket.accept() self.handle_client(client_socket, addr) except Exception as e: print(f"Error: e") def handle_client(self, client_socket, addr): """Handle incoming client connection""" handler = WSGIHandler(client_socket, addr, self.application) handler.handle_request() def shutdown(self): """Gracefully shutdown server""" self.running = False if self.server_socket: self.server_socket.close() import os import sys from io import BytesIO class WSGIHandler: """Handle individual HTTP requests""" wsgiserver 0.2
logger = logging.getLogger('wsgiserver') class MetricsMiddleware: """Collect request metrics""" def __init__(self, app): self.app = app self.request_count = 0 self.error_count = 0 def __call__(self, environ, start_response): self.request_count += 1 def custom_start_response(status, headers, exc_info=None): if status.startswith('5'): self.error_count += 1 return start_response(status, headers, exc_info) return self.app(environ, custom_start_response) CMD ["python", "-m", "wsgiserver
def limit_request_size(environ): content_length = environ.get('CONTENT_LENGTH', 0) if content_length and int(content_length) > MAX_REQUEST_SIZE: raise ValueError("Request too large") # benchmark.py import time import threading import requests from concurrent.futures import ThreadPoolExecutor def benchmark_server(url='http://localhost:8000/', num_requests=1000): def make_request(): try: response = requests.get(url) return response.status_code == 200 except: return False "8000"] def __init__(self



