Files
2026-04-05 00:43:23 +05:30

32 lines
1.0 KiB
Python

# backend/serve.py — Launches FastAPI + Socket.IO API server (Milestone 6)
# Run with: uvicorn serve:socket_app --host 0.0.0.0 --port 8000 --reload
#
# This module:
# 1. Initialises the database (creates tables if missing)
# 2. Exports `socket_app` — the combined FastAPI + Socket.IO ASGI app
# that uvicorn (or any ASGI server) can run directly.
#
# The Telegram bot runner (run.py) remains a separate process.
import asyncio
from contextlib import asynccontextmanager
import database as db
from api import socket_app, app # noqa: F401 — re-exported for uvicorn
@asynccontextmanager
async def lifespan(application):
"""FastAPI lifespan: initialise DB on startup."""
await db.init_db()
print("✅ negoT8 API server ready")
yield
print("👋 negoT8 API server shutting down")
# Attach the lifespan to the inner FastAPI app so uvicorn triggers it
app.router.lifespan_context = lifespan
# `socket_app` is the ASGI entry-point (Socket.IO wraps FastAPI).
# Uvicorn command: uvicorn serve:socket_app --port 8000