Wsgiserver - 0.2 Hot!

# Give server time to start import time time.sleep(0.5)

def __init__(self, host, port, application, workers=4): self.host = host self.port = port self.application = application self.workers = workers def run(self): for _ in range(self.workers): pid = os.fork() if pid == 0: # Child process server = WSGIServer(self.host, self.port, self.application) server.serve_forever() exit() # Parent waits os.wait() # /etc/systemd/system/wsgiserver.service [Unit] Description=WSGIServer 0.2 Application After=network.target [Service] Type=simple User=www-data Group=www-data WorkingDirectory=/var/www/myapp Environment="PYTHONPATH=/var/www/myapp" ExecStart=/var/www/myapp/venv/bin/python /var/www/myapp/app.py Restart=always wsgiserver 0.2

class MultiProcessServer: """Fork multiple worker processes""" # Give server time to start import time time

services: web: build: . ports: - "8000:8000" environment: - WSGI_HOST=0.0.0.0 - WSGI_PORT=8000 restart: unless-stopped 8.1 Logging Configuration import logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('wsgiserver.log'), logging.StreamHandler() ] ) '0.0.0.0') PORT = int(os.getenv('WSGI_PORT'

server = WSGIServer('127.0.0.1', 8888, app) thread = threading.Thread(target=server.serve_forever) thread.daemon = True thread.start()

server = WSGIServer('0.0.0.0', 8000, app) server.serve_forever() 7.1 Production Configuration # production_server.py import os from wsgiserver.server import WSGIServer Production settings HOST = os.getenv('WSGI_HOST', '0.0.0.0') PORT = int(os.getenv('WSGI_PORT', 8000)) WORKERS = int(os.getenv('WSGI_WORKERS', 4))

start_time = time.time() with ThreadPoolExecutor(max_workers=50) as executor: results = list(executor.map(lambda _: make_request(), range(num_requests)))