Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中处理全球500错误的最佳实践?_Python_Django - Fatal编程技术网

Python 在Django中处理全球500错误的最佳实践?

Python 在Django中处理全球500错误的最佳实践?,python,django,Python,Django,我有一个django应用程序,以MySQL和Redis作为后端运行 我有一个名为redis\u helper的函数来执行redis查询 但有时Redis会崩溃,需要一些时间来启动,所以我需要返回一条友好的HTTP500错误消息 问题是,django只在django/http/_u init__uuuuuuuuuuuuuuuuuuuuuuuu.py中定义了Http404Exception类,而不是Http500,所以我必须手动添加try。。。除了涉及redis_helper的每个视图函数之外。感觉

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

我有一个名为redis\u helper的函数来执行redis查询

但有时Redis会崩溃,需要一些时间来启动,所以我需要返回一条友好的HTTP500错误消息

问题是,django只在django/http/_u init__uuuuuuuuuuuuuuuuuuuuuuuu.py中定义了Http404Exception类,而不是Http500,所以我必须手动添加try。。。除了涉及redis_helper的每个视图函数之外。感觉有点难看,重复工作

如果不在视图中使用return HttpResponseServerError函数,是否有任何方便的方法引发server 500错误?如果我必须自己编写Http500类,那么哪个文件是编写它的最佳位置


问候并感谢你

听起来好像你没有尝试:在Redis调用中阻塞

是这样吗

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

所以我必须手动添加尝试。。。除了涉及redis_helper的每个视图函数之外

感觉有点难看,重复工作

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

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

编辑。而且请阅读:


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

没有特定的Http500异常。基本上你不想做这样的事情,因为这可能会隐藏你原来的错误。请继续使用try-except-block。好的,我有try-block,但是如果出现问题,我应该提高什么?@est:raise?你为什么要筹款?您可以返回带有错误消息的HttpResponse。你为什么试图提出一些问题?@S.Lott通过返回一个HttpResponse你的意思是我必须修改views.py中的每个函数,它称为edis\u helper?我认为发明raise Http500的目的是为了避免这种情况。@est:modify views.py中调用edis\U helper的每个函数。对这是一个始终有效的解决方案。不可能有那么多。如果是的话,你的设计真的做得很差。@S.Lott为什么多次调用redis\u helper是糟糕的设计?让我问你,如果django的auth.users模型出了问题,你会如何编写一个特定的、统一的错误页面?