This commit is contained in:
harold 2025-04-21 13:40:12 +05:00
parent 5b52f55a1a
commit 52b502dc56
2 changed files with 13 additions and 34 deletions

View File

@ -1,12 +1,8 @@
from fastapi import FastAPI
from faststream.rabbit import RabbitBroker, RabbitExchange, ExchangeType, QueueType, RabbitQueue
from faststream.rabbit.fastapi import RabbitRouter, Logger
from src.core.settings.base import settings
rabbitmq_router = RabbitRouter(
url=settings.RABBIT.URL,
)
broker = RabbitBroker(
url=settings.RABBIT.URL,
@ -38,8 +34,7 @@ success_gemini_subscriber = broker.subscriber(
)
@rabbitmq_router.after_startup
async def init_queue_and_publisher(app: FastAPI):
async def init_queue_and_publisher():
await broker.declare_exchange(base_exchange)
await broker.declare_queue(base_queue)
await broker.declare_queue(success_queue)

View File

@ -1,15 +1,16 @@
from contextlib import asynccontextmanager
from fastapi import FastAPI
from pyrogram import Client, filters, idle
from pyrogram.handlers import MessageHandler
from src.core.settings.base import settings
from src.core.tg_service.messages_handler import message_listener
from src.core.rabbitmq.connect import broker, init_queue_and_publisher, rabbitmq_router
import uvicorn
import asyncio
from src.core.rabbitmq.connect import broker, init_queue_and_publisher
# Инициализация Pyrogram клиента
tg_client = Client(
tg_app = Client(
name=settings.ACCOUNT.NAME,
api_id=settings.ACCOUNT.API_ID,
api_hash=settings.ACCOUNT.API_HASH,
@ -17,35 +18,18 @@ tg_client = Client(
@asynccontextmanager
async def lifespan(app: FastAPI):
await tg_client.start()
async def lifespan(fastapi_app: FastAPI):
await tg_app.start()
await broker.start()
await init_queue_and_publisher(app)
await init_queue_and_publisher()
await idle()
yield
await tg_client.stop()
await broker.close()
await tg_app.stop()
# Создание FastAPI приложения с кастомным lifespan
fastapi_app = FastAPI(lifespan=lifespan)
fastapi_app.include_router(rabbitmq_router)
# Добавление обработчика для Telegram
tg_client.add_handler(MessageHandler(
tg_app.add_handler(MessageHandler(
callback=message_listener,
filters=filters.all
))
if __name__ == "__main__":
# Запуск FastAPI и Pyrogram в одном event loop
config = uvicorn.Config(
fastapi_app,
host="0.0.0.0",
port=8000,
loop="asyncio"
)
server = uvicorn.Server(config)
asyncio.run(server.serve())
app = FastAPI(lifespan=lifespan)