"""Production WSGI entry point — Waitress (Windows) or Gunicorn (Linux).""" import sys import os import config # Add the setec-web directory to path sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from app import app def main(): cfg = config.load() host = "127.0.0.1" port = cfg.get("flask_port", 5000) print(f"SETEC LABS Manager starting on http://{host}:{port}") print(f"Production WSGI server") if sys.platform == "win32": try: import waitress print("Using Waitress (Windows)") waitress.serve(app, host=host, port=port, threads=4) except ImportError: print("WARNING: waitress not installed, falling back to Flask dev server") print("Install with: pip install waitress") app.run(host=host, port=port, debug=False) else: try: import gunicorn # noqa: F401 print("Using Gunicorn (Linux)") # For gunicorn, use CLI: gunicorn -w 4 -b 127.0.0.1:5000 wsgi:app # Fallback to waitress if gunicorn imported but we're not in CLI mode try: import waitress waitress.serve(app, host=host, port=port, threads=4) except ImportError: app.run(host=host, port=port, debug=False) except ImportError: try: import waitress print("Using Waitress (Linux)") waitress.serve(app, host=host, port=port, threads=4) except ImportError: print("WARNING: No production server found, falling back to Flask dev server") print("Install with: pip install waitress OR pip install gunicorn") app.run(host=host, port=port, debug=False) if __name__ == "__main__": main()