Обработка долгих ответов

async def chatting_with_bot(
        msg: types.Message,
        chat_service: AbstractChatService = Provide[Container.chat_service],
        uow: AbstractUnitOfWork = Provide[Container.uow],
) -> None:
    tg_abs_chat_id = str(abs(msg.chat.id))
    tg_abs_msg_id = str(abs(msg.message_id))
    chat_impl = chat_service.get_chat_implementation("telegram", tg_abs_chat_id, uow=uow)
    if not chat_impl:
        await msg.reply("Sorry, there seems to be no one here to answer you")
    loop = asyncio.get_running_loop()
    chat = chat_service.get_chat(chat_id=chat_impl.chat_id, uow=uow)
    user_content = msg.text.removeprefix(f"@{configs.TG_BOT_NAME}")
    try:
        user_message, bot_message = await chat_service.send_user_message_to_chatbot(
            chat_id=chat.chat_id,
            content=user_content,
            maker_id=chat.owner.user_id,
            reply_to=None,
            uow=uow
        )
    except service_exc.ConflictError:
        await msg.reply("It seems there is no one here to answer you. I could, but I can't")
        return
    except service_exc.ServiceError:
        await msg.reply("The Engine has boiled! Contact your system administrator")
        return

    sending_bot_message = await msg.reply(bot_message.content)
    tg_abs_bot_msg_id = str(abs(sending_bot_message.message_id))

Функция chat_service.send_user_message_to_chatbot возвращает некоторый ответ (текст) на некоторое пользовательское сообщение. Под капотом эта функция использует langchain для создания запросов к OpenAI.

Проблема заключается в том, что при получении объемного результата (текста) работы данной функции (от 1000-2000 символов) не срабатывает await msg.reply(bot_message.content) (в чат не приходит сообщение) и возникает ошибка TimeOut, хотя в переменную sending_bot_message я получаю сущность телеграм сообщения.

Логи:

{"type":"aiogram_session","bot":"000000","method":{"offset":275264410,"timeout":10,"allowed_updates":[]},"timeout":70,"api":{"base":"https://api.telegram.org/bot{token}/{method}","file":"https://api.telegram.org/file/bot{token}/{path}","is_local":false,"wrap_local_file":"<aiogram.client.telegram.BareFilesPathWrapper object at 0x7f1ae1da0610>"},"url":"https://api.telegram.org/bot000000/getUpdates","event":"Making request to API","level":"debug","timestamp":1707064556.9849477}
{"type":"aiogram_session","bot":"000000","method":{"chat_id":000000,"text":"ТЕКСТО КОТОРЫЙ ДОЛЖЕН ПОЯВИТЬСЯ В ЧАТЕ КАК ОТВЕТ БОТА","reply_to_message_id":318},"timeout":null,"api":{"base":"https://api.telegram.org/bot{token}/{method}","file":"https://api.telegram.org/file/bot{token}/{path}","is_local":false,"wrap_local_file":"<aiogram.client.telegram.BareFilesPathWrapper object at 0x7f1ae1da0610>"},"url":"https://api.telegram.org/bot000000/sendMessage","error":"TelegramNetworkError('HTTP Client says - ServerDisconnectedError: Server disconnected')","time_spent_ms":60183.444014001,"event":"API error","level":"error","timestamp":1707064565.644201}
INFO:aiogram.event:Update id=275264409 is not handled. Duration 79438 ms by bot id=000000
ERROR:aiogram.event:Cause exception while process update id=275264409 by bot id=000000
TelegramNetworkError: HTTP Client says - ServerDisconnectedError: Server disconnected
Traceback (most recent call last):
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/client/session/aiohttp.py", line 171, in make_request
    async with session.post(
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiohttp/client.py", line 1187, in __aenter__
    self._resp = await self._coro
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiohttp/client.py", line 601, in _request
    await resp.start(conn)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiohttp/client_reqrep.py", line 965, in start
    message, payload = await protocol.read()  # type: ignore[union-attr]
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiohttp/streams.py", line 622, in read
    await self._waiter
aiohttp.client_exceptions.ServerDisconnectedError: Server disconnected

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/dispatcher.py", line 309, in _process_update
    response = await self.feed_update(bot, update, **kwargs)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/dispatcher.py", line 158, in feed_update
    response = await self.update.wrap_outer_middleware(
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/middlewares/error.py", line 25, in __call__
    return await handler(event, data)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/middlewares/user_context.py", line 27, in __call__
    return await handler(event, data)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/fsm/middleware.py", line 41, in __call__
    return await handler(event, data)
  File "/home/allcups/PycharmProjects/spec/src/app/entrypoints/telegram_bot/middlewares/logging.py", line 96, in __call__
    await handler(event, data)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/event/telegram.py", line 121, in trigger
    return await wrapped_inner(event, kwargs)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/event/handler.py", line 43, in call
    return await wrapped()
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/dispatcher.py", line 276, in _listen_update
    return await self.propagate_event(update_type=update_type, event=event, **kwargs)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/router.py", line 128, in propagate_event
    return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/router.py", line 123, in _wrapped
    return await self._propagate_event(
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/router.py", line 156, in _propagate_event
    response = await router.propagate_event(update_type=update_type, event=event, **kwargs)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/router.py", line 128, in propagate_event
    return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/router.py", line 123, in _wrapped
    return await self._propagate_event(
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/router.py", line 148, in _propagate_event
    response = await observer.trigger(event, **kwargs)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/event/telegram.py", line 121, in trigger
    return await wrapped_inner(event, kwargs)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/dispatcher/event/handler.py", line 43, in call
    return await wrapped()
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/dependency_injector/wiring.py", line 994, in _patched
    return await _async_inject(
  File "src/dependency_injector/_cwiring.pyx", line 66, in _async_inject
  File "/home/allcups/PycharmProjects/spec/src/app/entrypoints/telegram_bot/handlers/groupchat/messages.py", line 49, in chatting_with_bot
    sending_bot_message = await msg.reply(bot_message.content)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/methods/base.py", line 84, in emit
    return await bot(self)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/client/bot.py", line 441, in __call__
    return await self.session(self, method, timeout=request_timeout)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/client/session/base.py", line 257, in __call__
    return cast(TelegramType, await middleware(bot, method))
  File "/home/allcups/PycharmProjects/spec/src/app/entrypoints/telegram_bot/utils/smart_session.py", line 78, in make_request
    raise e
  File "/home/allcups/PycharmProjects/spec/src/app/entrypoints/telegram_bot/utils/smart_session.py", line 68, in make_request
    res = await super().make_request(bot, method, timeout)
  File "/home/allcups/PycharmProjects/spec/src/app/entrypoints/telegram_bot/utils/smart_session.py", line 44, in make_request
    raise e
  File "/home/allcups/PycharmProjects/spec/src/app/entrypoints/telegram_bot/utils/smart_session.py", line 37, in make_request
    res = await super().make_request(bot, method, timeout)
  File "/home/allcups/PycharmProjects/spec/.venv/lib/python3.9/site-packages/aiogram/client/session/aiohttp.py", line 178, in make_request
    raise TelegramNetworkError(method=method, message=f"{type(e).__name__}: {e}")
aiogram.exceptions.TelegramNetworkError: HTTP Client says - ServerDisconnectedError: Server disconnected
{"type":"aiogram_session","bot":"000000","method":{"offset":275264410,"timeout":10,"allowed_updates":[]},"timeout":70,"api":{"base":"https://api.telegram.org/bot{token}/{method}","file":"https://api.telegram.org/file/bot{token}/{path}","is_local":false,"wrap_local_file":"<aiogram.client.telegram.BareFilesPathWrapper object at 0x7f1ae1da0610>"},"url":"https://api.telegram.org/bot000000/getUpdates","response":[],"time_spent_ms":10141.04276999933,"event":"API response","level":"debug","timestamp":1707064567.125994}
{"type":"aiogram_session","bot":"000000","method":{"offset":275264410,"timeout":10,"allowed_updates":[]},"timeout":70,"api":{"base":"https://api.telegram.org/bot{token}/{method}","file":"https://api.telegram.org/file/bot{token}/{path}","is_local":false,"wrap_local_file":"<aiogram.client.telegram.BareFilesPathWrapper object at 0x7f1ae1da0610>"},"url":"https://api.telegram.org/bot000000/getUpdates","event":"Making request to API","level":"debug","timestamp":1707064567.1260796}

Версия aiogram - 3.3.0


Ответы (0 шт):