diff --git a/telegram-application/src/core/rabbitmq/connect.py b/telegram-application/src/core/rabbitmq/connect.py index ab5c721..8c8a45f 100644 --- a/telegram-application/src/core/rabbitmq/connect.py +++ b/telegram-application/src/core/rabbitmq/connect.py @@ -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) diff --git a/telegram-application/src/main.py b/telegram-application/src/main.py index 3400f1a..faa8dd4 100644 --- a/telegram-application/src/main.py +++ b/telegram-application/src/main.py @@ -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()) \ No newline at end of file +app = FastAPI(lifespan=lifespan)