Подтвердить что ты не робот

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

Любая идея?

4b9b3361

Ответ 1

У меня есть аналогичная потребность в воссоздании подключения к базе данных, и я пытаюсь использовать следующую черную магию для reset соединения в django 1.3:

from django.db import connection
connection.connection.close()
connection.connection = None

У меня нет PostgreSQL, чтобы попробовать это, но он, по-видимому, работает для MySQL и sqlite по крайней мере. Кроме того, если вы используете multi-db, вам нужно будет выполнить этот шаг на вашем конкретном соединении из словаря django.db.connections.