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) |