Asyncpg пул случайно перестает отвечать
Я использую asyncpg Pool
для моего бота discord.py, но, как я уже сказал в заголовке, он случайно перестает отвечать. Команды, использующие пул, не работают, но другие работают, и я уверен, что закрываю все соединения после их использования. Я пытался найти в Google, но ничего не нашел
Вот как я создаю пул:
self.pg_pool:asyncpg.pool.Pool = await asyncpg.create_pool(DSN,
max_inactive_connection_lifetime=3600.0)
РЕДАКТИРОВАТЬ: Я думал, что этой информации недостаточно, и я решил что-то добавить. Я не получаю никаких исключений или ошибок. Я подумал, может быть, это из-за жизни бассейна и изменил его на 0
(отключает механизм), и это не работает
1 ответ
Я открыл проблему с разработчиками asyncpg и обнаружил, что пул соединения должны быть открыты с async with pool.acquire() as conn:
чтобы они были правильно закрыты на удивление. Надеюсь, это поможет.
Неправда, что нужно получать соединения с помощью диспетчера контекста, например async with pool.acquire() as conn
. Вполне возможноconn = await pool.acquire()
...
... Тем не менее, почему вы хотите, чтобы соединение длилось так долго? Думаю, ваш вопрос относится скорее к архитектурной стороне, чем к самому коду. Я не могу придумать причину, по которой когда-либо ХОЧЕТСЯ, чтобы соединение с базой данных оставалось открытым так долго.