Принудительно возобновить соединение с базой данных в случае потери - PullRequest
0 голосов
/ 10 марта 2019

В моем веб-приложении Python-Django иногда база данных отключается (проблемы, связанные с моей тестовой средой, не так стабильно ...), и мое веб-приложение выдает мне эту ошибку:

  File "/usr/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 222, in create_cursor,
django.db.utils.InterfaceError: connection already closed,
    cursor = self.connection.cursor()

Теперь, как я могу сказать django повторить попытку, чтобы открыть соединение и продолжить?похоже, что в этот момент Джанго застрял ...

Спасибо.

1 Ответ

0 голосов
/ 11 марта 2019

Нет способа сообщить Django, что он должен повторить попытку при ошибке соединения.Вместо этого он предназначен для того, чтобы просто не выполнять этот запрос.Из документации :

Если при обработке запросов возникли какие-либо ошибки базы данных, Django проверяет, все ли работает соединение, и закрывает его, если это не так.Таким образом, ошибки базы данных затрагивают не более одного запроса;если соединение становится непригодным, следующий запрос получает новое соединение.

Однако это не должно быть проблемой, если вы будете следовать этому совету в документации:

Если через некоторое время ваша база данных завершает бездействующие соединения, вам следует установить для CONN_MAX_AGE более низкое значение, чтобы Django не пытался использовать соединение, которое было прервано сервером базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...