Spaces:
Runtime error
Runtime error
Download src/modules/api/app.py from pnstack/template-python: direct link, hf CLI and curl.
- Browser
- Download file 1.81 kB
-
https://huggingface.co/spaces/pnstack/template-python/resolve/43909516e0cf3c8301074a335734d496399a54b9/src/modules/api/app.py
- Command line
-
hf download hf://spaces/pnstack/template-python@43909516e0cf3c8301074a335734d496399a54b9/src/modules/api/app.py
-
curl -L -o app.py https://huggingface.co/spaces/pnstack/template-python/resolve/43909516e0cf3c8301074a335734d496399a54b9/src/modules/api/app.py
1.81 kB
| """FastAPI application factory.""" | |
| from fastapi import FastAPI, WebSocket, WebSocketDisconnect | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from .routes import v1_router | |
| class ConnectionManager: | |
| def __init__(self): | |
| self.active_connections: List[WebSocket] = [] | |
| async def connect(self, websocket: WebSocket): | |
| await websocket.accept() | |
| self.active_connections.append(websocket) | |
| def disconnect(self, websocket: WebSocket): | |
| self.active_connections.remove(websocket) | |
| async def broadcast(self, message: str): | |
| for connection in self.active_connections: | |
| await connection.send_text(message) | |
| manager = ConnectionManager() | |
| def create_app() -> FastAPI: | |
| """Create and configure the FastAPI application.""" | |
| app = FastAPI() | |
| # Add CORS middleware | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # Include routers | |
| app.include_router(v1_router) | |
| async def startup_event(): | |
| """Run startup events.""" | |
| pass | |
| async def shutdown_event(): | |
| """Run shutdown events.""" | |
| pass | |
| async def websocket_endpoint(websocket: WebSocket): | |
| await manager.connect(websocket) | |
| try: | |
| while True: | |
| data = await websocket.receive_text() | |
| print(f"Received: {data}") | |
| await manager.broadcast(f"Message from client: {data}") | |
| except WebSocketDisconnect: | |
| manager.disconnect(websocket) | |
| await manager.broadcast("A client disconnected") | |
| return app | |
| # Create default app instance | |
| app = create_app() | |