@Tayrus0

Почему бот тормозит?

У меня есть бот, написан на python3.9, aiogram, везде асинхронный код, и раскиданы dp.async_task, что все задачи создавались асинхронно, бот на веб хуке, база данных на postgresql, для подключения использую asyncpg, создаю пул и пользуюсь соединениями, но когда становится много пользователей бот начинает тупить именно на тех кнопках, где есть обращение в бд, я грешил на бд, поставил логирование, и оказалось что сами запросы выполняются за 100ms, а в приложении (я поставил таймер) 1-4с, почему так ?

Так же ещё хотел спросить как будет лучше
async with self.pool.acquire() as con:
    async with con.transaction():
        res = await con.fetch(sql, user_chat_id)

Или так
async with self.pool.acquire() as con:
        res = await con.fetch(sql, user_chat_id)


На пользователя создается по 30-60 asyncio тасков и в каждом из них есть выполнение функции
async def is_person_id_blacklisted_user(self, user_id: int, place: str, person_id):
        sql = 'SELECT blacklisted_id FROM blacklist_persons WHERE user_id = $1 AND place = $2 AND blacklisted_id = $3 LIMIT 1'

        async with self.pool.acquire() as con:
            async with con.transaction():
                return await con.fetchval(sql, user_id, place, str(person_id))


И вот как раз она начинает тормозить, в таблице всего 200к записей, иногда эта функция возвращает +- быстрый ответ, но иногда и 1-4с, что уже многовато
  • Вопрос задан
  • 528 просмотров
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Даже 100 мсек на таблицах такого размера - это много. Первое, что приходит в голову - СУБД не хватает памяти/проца, либо она не настроена (это касается и нужных индексов).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы