| import os |
| import sys |
| import logging |
| import subprocess |
|
|
| logging.basicConfig(level=logging.INFO) |
| logger = logging.getLogger(__name__) |
|
|
| if __name__ == "__main__": |
| |
| if os.getenv("ENVIRONMENT") == "development": |
| import uvicorn |
| port = int(os.getenv("PORT", 7860)) |
| logger.info(f"Starting development server on port {port} with hot reload") |
| uvicorn.run("app:app", host="0.0.0.0", port=port, reload=True) |
| else: |
| |
| logger.info("Starting production server with Gunicorn and Uvicorn workers") |
| cmd = [ |
| "gunicorn", |
| "-c", "gunicorn_conf.py", |
| "-k", "uvicorn.workers.UvicornWorker", |
| "app:app" |
| ] |
| try: |
| subprocess.run(cmd, check=True) |
| except subprocess.CalledProcessError as e: |
| logger.error(f"Error starting Gunicorn: {e}") |
| sys.exit(1) |
| except KeyboardInterrupt: |
| logger.info("Server stopped by user") |
| sys.exit(0) |