В процессе работы граббера сервер неожиданно закрыл соединение с ним
spoilerTraceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/crypto/price_vs4_history.py", line 419, in save_history
self.cur.execute(self.history_insert,t)
psycopg2.OperationalError: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/crypto/price_vs4_history.py", line 474, in
run_grabber('01-06-2016')
File "C:/Users/Administrator/PycharmProjects/crypto/price_vs4_history.py", line 466, in run_gecko_grabber
db.save_history(cg.coins[c],dt)
File "C:/Users/Administrator/PycharmProjects/crypto/price_vs4_history.py", line 423, in save_history
self.conn.rollback()
psycopg2.InterfaceError: connection already closed
Как я понял перед любым сохранением в базу нужно выполнить проверку соединения с ней?
Или лучше сделать Exception, и если мы идем в него, то сделать переподключение к базе заново, чтобы программа не вылетала?
Как делается проверка на закрытость соединения?
За подключение к базе у меня отвечает Класс
class DBController:
def __init__(self,database=database, user=user, password=password, host=host, port=port):
self.conn=psycopg2.connect(database=database,user=user,password=password,host=host,port=port)
self.cur=self.conn.cursor()
Я добавил функцию Reconnect
def reconnect(self):
self.conn=psycopg2.connect(database=database,user=user,password=password,host=host,port=port)
self.cur=self.conn.cursor()
И затем при сохранении
except Exception:
# Тут должен быть цикл со проверкой статуса текущего подключения, но как его сделать?
#sleep(1)
#While status ='подключения нет' :
reconnect()
upd: Нагуглил что Psycopg2
не предоставляет такой информации и нужно делать как-то через запрос