add fix
This commit is contained in:
parent
5b52f55a1a
commit
52b502dc56
@ -1,12 +1,8 @@
|
|||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
|
|
||||||
from faststream.rabbit import RabbitBroker, RabbitExchange, ExchangeType, QueueType, RabbitQueue
|
from faststream.rabbit import RabbitBroker, RabbitExchange, ExchangeType, QueueType, RabbitQueue
|
||||||
from faststream.rabbit.fastapi import RabbitRouter, Logger
|
|
||||||
from src.core.settings.base import settings
|
from src.core.settings.base import settings
|
||||||
|
|
||||||
rabbitmq_router = RabbitRouter(
|
|
||||||
url=settings.RABBIT.URL,
|
|
||||||
)
|
|
||||||
|
|
||||||
broker = RabbitBroker(
|
broker = RabbitBroker(
|
||||||
url=settings.RABBIT.URL,
|
url=settings.RABBIT.URL,
|
||||||
@ -38,8 +34,7 @@ success_gemini_subscriber = broker.subscriber(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@rabbitmq_router.after_startup
|
async def init_queue_and_publisher():
|
||||||
async def init_queue_and_publisher(app: FastAPI):
|
|
||||||
await broker.declare_exchange(base_exchange)
|
await broker.declare_exchange(base_exchange)
|
||||||
await broker.declare_queue(base_queue)
|
await broker.declare_queue(base_queue)
|
||||||
await broker.declare_queue(success_queue)
|
await broker.declare_queue(success_queue)
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
|
|
||||||
from pyrogram import Client, filters, idle
|
from pyrogram import Client, filters, idle
|
||||||
from pyrogram.handlers import MessageHandler
|
from pyrogram.handlers import MessageHandler
|
||||||
|
|
||||||
from src.core.settings.base import settings
|
from src.core.settings.base import settings
|
||||||
from src.core.tg_service.messages_handler import message_listener
|
from src.core.tg_service.messages_handler import message_listener
|
||||||
from src.core.rabbitmq.connect import broker, init_queue_and_publisher, rabbitmq_router
|
from src.core.rabbitmq.connect import broker, init_queue_and_publisher
|
||||||
import uvicorn
|
|
||||||
import asyncio
|
|
||||||
|
|
||||||
# Инициализация Pyrogram клиента
|
|
||||||
tg_client = Client(
|
tg_app = Client(
|
||||||
name=settings.ACCOUNT.NAME,
|
name=settings.ACCOUNT.NAME,
|
||||||
api_id=settings.ACCOUNT.API_ID,
|
api_id=settings.ACCOUNT.API_ID,
|
||||||
api_hash=settings.ACCOUNT.API_HASH,
|
api_hash=settings.ACCOUNT.API_HASH,
|
||||||
@ -17,35 +18,18 @@ tg_client = Client(
|
|||||||
|
|
||||||
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
async def lifespan(app: FastAPI):
|
async def lifespan(fastapi_app: FastAPI):
|
||||||
await tg_client.start()
|
await tg_app.start()
|
||||||
await broker.start()
|
await broker.start()
|
||||||
await init_queue_and_publisher(app)
|
await init_queue_and_publisher()
|
||||||
await idle()
|
await idle()
|
||||||
|
|
||||||
yield
|
yield
|
||||||
|
await tg_app.stop()
|
||||||
await tg_client.stop()
|
|
||||||
await broker.close()
|
|
||||||
|
|
||||||
|
|
||||||
# Создание FastAPI приложения с кастомным lifespan
|
tg_app.add_handler(MessageHandler(
|
||||||
fastapi_app = FastAPI(lifespan=lifespan)
|
|
||||||
fastapi_app.include_router(rabbitmq_router)
|
|
||||||
|
|
||||||
# Добавление обработчика для Telegram
|
|
||||||
tg_client.add_handler(MessageHandler(
|
|
||||||
callback=message_listener,
|
callback=message_listener,
|
||||||
filters=filters.all
|
filters=filters.all
|
||||||
))
|
))
|
||||||
|
|
||||||
if __name__ == "__main__":
|
app = FastAPI(lifespan=lifespan)
|
||||||
# Запуск 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())
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user