处理Django中全局500错误的最佳实践?

时间:2011-04-15 09:36:02

标签: python django

我有一个运行MySQL和Redis作为后端的django应用程序

我有一个名为redis_helper()的函数来执行redis查询。

但有时Redis崩溃并需要一段时间来启动,所以我需要返回友好的HTTP 500错误消息。

问题是,django只定义了Http404(Exception)中的django/http/__init__.py类,而不是Http500(),所以我必须在try ... except的每个视图函数中手动添加redis_helper() } 被卷入。感觉有点难看,重复工作。

是否有任何方便的方法在视图函数中使用return HttpResponseServerError()引发服务器500错误而不是?如果我必须自己编写Http500课程,哪个文件最适合写它?

问候并谢谢你!

2 个答案:

答案 0 :(得分:0)

听起来try:电话周围没有Redis阻止。

是这样的吗?

如果是,答案是使用try:阻止。

  

所以我必须手动添加try ...除了涉及redis_helper()的每个视图函数。

正确。

  

感觉有点难看并且重复工作。

不正确的。每个视图函数都必须返回HttpResponse个对象。你必须实际编写该代码。

我很抱歉,如果编写视图函数似乎在重复,但是,这就是他们必须工作的方式。他们必须返回HttpResponse个对象。


编辑。也。请阅读

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

答案 1 :(得分:0)

好的,现在我明白了Http404的工作原理。因此,您必须在某处定义此Http500异常,并在中间件中捕获它。