Spaces:
Sleeping
Sleeping
| import uvicorn | |
| import os | |
| import socket | |
| def get_ip_address(): | |
| """Get the local IP address of the machine.""" | |
| try: | |
| # Create a socket connection to an external server | |
| s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
| # Doesn't need to be reachable | |
| s.connect(("8.8.8.8", 80)) | |
| ip_address = s.getsockname()[0] | |
| s.close() | |
| return ip_address | |
| except Exception as e: | |
| print(f"Error getting IP address: {e}") | |
| return "127.0.0.1" # Return localhost if there's an error | |
| if __name__ == "__main__": | |
| # Create static/images directory if it doesn't exist | |
| os.makedirs("app/static/images", exist_ok=True) | |
| # Check for force reset flag | |
| # Get the IP address | |
| ip_address = get_ip_address() | |
| # Display access information | |
| print("\n" + "=" * 50) | |
| print(f"Access from other devices at: http://{ip_address}:8000") | |
| print("=" * 50 + "\n") | |
| # Get port from environment variable (for Render deployment) or default to 8000 | |
| port = int(os.environ.get("PORT", 8000)) | |
| # Check if running in production (Render sets this) | |
| is_production = os.environ.get("RENDER") is not None | |
| if is_production: | |
| print(f"Starting production server on port {port}") | |
| # Production mode - no reload, bind to 0.0.0.0 | |
| uvicorn.run("app.main:app", host="0.0.0.0", port=port, reload=False) | |
| else: | |
| # Development mode - Run the application on your IP address | |
| # Using 0.0.0.0 allows connections from any IP | |
| uvicorn.run("app.main:app", host="0.0.0.0", port=port, reload=True) |