Files
QBPOS-Help/python/production_server.py

67 lines
2.2 KiB
Python
Raw Normal View History

2026-01-27 18:07:54 -06:00
#!/usr/bin/env python3
"""
Production HTTP Server for QuickBooks POS Help Documentation
Optimized for high traffic (100,000+ users)
"""
import http.server
import socketserver
import os
import logging
from datetime import datetime, timedelta
PORT = 8888
DIRECTORY = "QB_Help_Web"
# Configure minimal logging
logging.basicConfig(level=logging.ERROR)
class OptimizedHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
# Disable verbose request logging
def log_message(self, format, *args):
# Only log errors, not every request
if args[1][0] in ('4', '5'): # 4xx and 5xx errors only
super().log_message(format, *args)
def __init__(self, *args, **kwargs):
super().__init__(*args, directory=DIRECTORY, **kwargs)
def end_headers(self):
# Disable caching to ensure changes take effect immediately
self.send_header('Cache-Control', 'no-cache, no-store, must-revalidate')
self.send_header('Pragma', 'no-cache')
self.send_header('Expires', '0')
super().end_headers()
os.chdir(os.path.dirname(os.path.abspath(__file__)))
# Use ThreadingTCPServer for handling multiple simultaneous connections
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
allow_reuse_address = True
daemon_threads = True
request_queue_size = 50 # Increase queue size for high traffic
print(f"="*60)
print(f"QuickBooks POS Help Documentation Server")
print(f"="*60)
print(f"Server running at:")
print(f" Local: http://localhost:{PORT}/POS_Help.html")
print(f" Network: http://192.168.10.130:{PORT}/POS_Help.html")
print(f"\nOptimizations:")
print(f" ✓ Static asset caching (1 year)")
print(f" ✓ Minimal logging (errors only)")
print(f" ✓ Multi-threaded connections")
print(f" ✓ High traffic queue (50 requests)")
print(f"\nFor 100,000+ users, consider:")
print(f" - Installing nginx (sudo apt install nginx)")
print(f" - Using a CDN for static assets")
print(f" - Load balancing across multiple servers")
print(f"\nPress Ctrl+C to stop the server")
print(f"="*60)
try:
with ThreadedTCPServer(("0.0.0.0", PORT), OptimizedHTTPRequestHandler) as httpd:
httpd.serve_forever()
except KeyboardInterrupt:
print("\n\nServer stopped.")