Здравствуйте.
Простейший SQL запрос
get_id
class User:
def __init__(self, database):
self.conn = psycopg2.connect(database)
self.cursor = self.conn.cursor()
def get_id(self, user_id):
with self.conn:
self.cursor.execute('SELECT id FROM users WHERE user_id=%s', (user_id,))
return self.cursor.fetchone()
После запуска приложения через некоторое время, иногда через полчаса, иногда через 5-10 часов неожиданно отключается соединение с базой данных
и возникает ошибка
File "/root/tgbot/postgres.py", line 22, in get_id
self.cursor.execute('SELECT id FROM users WHERE user_id=%s', (user_id,))
psycopg2.OperationalError: SSL connection has been closed unexpectedly
и следом
psycopg2.InterfaceError: connection already closed
Дальнейшие попытки обращения к БД дают ту же ошибку,
psycopg2.InterfaceError: connection already closed
Ошибка исправляется только перезапуском postgresql и затем приложения.
Ubuntu 20.04
Python==3.8.10
PostgreSQL==12
psycopg2-binary==2.9.5
У меня несколько серверов, есть еще Debian 11, на них стоят разные версии PostgreSQL, есть 11, есть 13.
psycopg2-binary есть 2.9.5, есть 2.9.4, есть 2.9.3
И на двух серверах эта ошибка возникает, на остальных приложение можно месяцами не трогать, оно будет работать. Как будто неважны версии и ос.
В чем может быть дело?