Django, как повторно подключиться после DatabaseError: тайм-аут запроса
У меня есть автономный script, который читает/записывает из/в Postgre с помощью Django ORM.
Я получаю эту ошибку время от времени
DatabaseError: сервер тайм-аута запроса неожиданно закрыл соединение Это, вероятно, означает, что сервер прерывается ненормально до или во время обработки запроса.
Мне нужно восстановить соединение и повторить код обработки в script, но не может найти способ. Следующий код вызывает "InterfaceError: соединение уже закрыто" при повторном запуске, поэтому он не работает.
for repeat in range(5):
try:
.....................PROCESSING CODE...................
except DatabaseError, e:
time.sleep(30)
else:
break
else:
return
Любая идея?
Ответы
Ответ 1
У меня есть аналогичная потребность в воссоздании подключения к базе данных, и я пытаюсь использовать следующую черную магию для reset соединения в django 1.3:
from django.db import connection
connection.connection.close()
connection.connection = None
У меня нет PostgreSQL, чтобы попробовать это, но он, по-видимому, работает для MySQL и sqlite по крайней мере. Кроме того, если вы используете multi-db, вам нужно будет выполнить этот шаг на вашем конкретном соединении из словаря django.db.connections.