У меня есть бот, написан на 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с, что уже многовато