2011-04-15 59 views
0

我有一个Django应用程序与MySQL和Redis的运行作为后端处理Django中的全球500错误的最佳做法?

我有一个名为redis_helper()功能做Redis的查询。

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

的问题是,仅django的定义django/http/__init__.py,不Http500()Http404(Exception)类,所以我在哪里redis_helper()参与每个视图函数手动添加try ... except。它感觉有点丑陋,重复着作。

是否有任何方便的方法来提升服务器500错误而不是使用return HttpResponseServerError()查看函数?如果我必须自己写Http500这个文件是哪个文件写的最好的地方?

谢谢,谢谢!

+0

没有特定的Http500异常。基本上你不想这样做,因为这可能会隐藏你的原始错误。留在你的尝试 - 除了块。 – 2011-04-15 10:10:47

回答

0

好吧,现在我明白了如何Http404作品。所以你必须在某个地方定义这个异常,并在中间件中捕获它。

0

这听起来像你没有try:块围绕Redis调用。

是这样吗?

如果是这样,答案是使用try:块。

所以我必须手动添加尝试...除了在每个查看函数,其中redis_helper()涉及。

正确。

它感觉有点难看,重复工作。

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

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


编辑。也。请阅读这样的:

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

+0

好吧,我有'尝试'块,但是如果有什么问题,我应该怎样'提升'? – est 2011-04-15 10:58:14

+0

@est:'raise'?你为什么要提什么?您可以返回一个带有错误消息的HttpResponse。你为什么要“提高”某些东西? – 2011-04-15 11:38:46

+0

@ S.Lott通过“返回一个HttpResponse”,你的意思是我必须修改views.py中调用'edis_helper()'的每个函数?我认为发明'提高Http500'的意义在于避免这种情况。 – est 2011-04-18 04:13:38