Лучшая практика для обработки глобальных 500 ошибок в Django? - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть приложение django, работающее с MySQL и Redis в качестве бэкэнда.

У меня есть функция redis_helper() для выполнения запросов redis.

Но иногда Redis аварийно завершает работу и требует некоторого времени для загрузки, поэтому мне нужно вернуть дружественное сообщение об ошибке HTTP 500.

Проблема в том, что django определяет только класс Http404(Exception) в django/http/__init__.py,не Http500(), поэтому я должен вручную добавить try ... except в каждую функцию представления, где задействовано redis_helper().Это немного уродливо и повторяет работу.

Есть ли какой-нибудь удобный способ поднять ошибку сервера 500 , а не , используя return HttpResponseServerError() в функциях просмотра?Если мне нужно написать Http500 класс сам, какой файл является лучшим местом для его записи?

С уважением и спасибо!

Ответы [ 2 ]

0 голосов
/ 08 августа 2012

хорошо, теперь я понимаю, как работает Http404. Поэтому вы должны где-то определить это Http500 исключение и перехватить его в промежуточном программном обеспечении.

0 голосов
/ 15 апреля 2011

Похоже, у вас нет блока try: вокруг вызова Redis.

Это так?

Если так, то ответом является использование блока try:.

, поэтому я должен вручную добавить try ... за исключением каждой функции представления, в которой была задействована redis_helper ().

Правильно.

Это немного уродливо и повторяет работу.

Неверно.Каждая функция представления должна возвращать объект HttpResponse.Вы действительно должны написать этот код.

Извините, если написание функций представления кажется повторяющимся, но они должны работать именно так.Они должны возвращать HttpResponse объект.


Редактировать.Также.Пожалуйста прочитайте это:

http://docs.djangoproject.com/en/1.3/topics/http/views/#the-500-server-error-view

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