Spaces:
Running
Running
Download run.py from trigent09/ai-backend: direct link, hf CLI and curl.
- Browser
- Download file 1.97 kB
-
https://huggingface.co/spaces/trigent09/ai-backend/resolve/main/run.py
- Command line
-
hf download hf://spaces/trigent09/ai-backend/run.py
-
curl -L -o run.py https://huggingface.co/spaces/trigent09/ai-backend/resolve/main/run.py
1.97 kB
| """ | |
| Unified launcher for AI Quiz System: | |
| Runs FastAPI backend on port 8000 and Streamlit frontend on port 8501. | |
| """ | |
| import subprocess | |
| import sys | |
| import time | |
| import socket | |
| from pathlib import Path | |
| def is_port_open(port: int, host: str = "127.0.0.1") -> bool: | |
| with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: | |
| s.settimeout(0.5) | |
| return s.connect_ex((host, port)) == 0 | |
| def start_services(): | |
| # Ensure we use venv python if present and not already inside venv | |
| python_exe = sys.executable | |
| venv_python = Path(__file__).resolve().parent / "venv" / "Scripts" / "python.exe" | |
| if venv_python.exists() and "venv" not in sys.executable.lower(): | |
| python_exe = str(venv_python) | |
| print(f"Using Python: {python_exe}") | |
| print("Starting FastAPI backend on http://127.0.0.1:8000...") | |
| backend_proc = subprocess.Popen( | |
| [python_exe, "-m", "uvicorn", "backend.main:app", "--host", "127.0.0.1", "--port", "8000", "--reload", "--reload-dir", "backend"] | |
| ) | |
| print("Waiting for FastAPI backend to initialize embedding models...") | |
| for _ in range(30): | |
| if is_port_open(8000): | |
| print("FastAPI backend is ready!") | |
| break | |
| time.sleep(1) | |
| print("Starting Streamlit frontend on http://127.0.0.1:8501...") | |
| frontend_proc = subprocess.Popen( | |
| [python_exe, "-m", "streamlit", "run", "frontend/app.py", "--server.port", "8501", "--server.headless", "true", "--server.runOnSave", "true"] | |
| ) | |
| print("\nAI Quiz System is running!") | |
| print("- FastAPI API Docs: http://127.0.0.1:8000/docs") | |
| print("- Streamlit UI: http://127.0.0.1:8501") | |
| print("\nPress Ctrl+C to terminate both services.\n") | |
| try: | |
| while True: | |
| time.sleep(1) | |
| except KeyboardInterrupt: | |
| print("\nStopping services...") | |
| backend_proc.terminate() | |
| frontend_proc.terminate() | |
| print("Done.") | |
| if __name__ == "__main__": | |
| start_services() | |