backend / app /main.py
precison9's picture
integrate RabbitMQ with CloudAMQP
3557eaa
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.auth.routes import router as auth_router
from app.rag.routes import router as rag_router
from app.logging_config import setup_logging
from app.rabbitmq.connection import rabbitmq
from app.rabbitmq.consumers import start_consumers
setup_logging()
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
# ── Startup ──
logger.info("Connecting to RabbitMQ...")
await rabbitmq.connect()
await start_consumers()
yield
# ── Shutdown ──
logger.info("Disconnecting from RabbitMQ...")
await rabbitmq.disconnect()
app = FastAPI(
title="EchoLoft AI API",
description="SaaS RAG Chat with Groq + RabbitMQ event streaming",
version="1.2.0",
lifespan=lifespan,
)
app.add_middleware(
CORSMiddleware,
allow_origins=[
"http://localhost:3000",
"https://echoloftai.vercel.app",
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(auth_router)
app.include_router(rag_router, prefix="/rag")
@app.get("/")
async def root():
return {
"message": "Welcome to EchoLoft AI API",
"version": "1.2.0",
"rabbitmq": "connected" if rabbitmq.is_connected else "disconnected",
}
@app.get("/health")
async def health():
return {
"status": "ok",
"rabbitmq": "connected" if rabbitmq.is_connected else "disconnected",
}