django 崩溃:异常必须是旧式类或派生自 BaseException,而不是 str

Posted

技术标签:

【中文标题】django 崩溃:异常必须是旧式类或派生自 BaseException,而不是 str【英文标题】:django crash: exceptions must be old-style classes or derived from BaseException, not str 【发布时间】:2018-11-21 05:57:18 【问题描述】:

我有一个使用 1.9 的应用。它可以正常工作数周和数周, 然后突然出现一个刚刚工作的页面会崩溃 这个:

Traceback:

File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py"
in get_response
 174.                     response =
self.process_exception_by_middleware(e, request)
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py"
in get_response
 172.                     response = response.render()
File "/usr/lib/python2.7/site-packages/django/template/response.py" in render
 160.             self.content = self.rendered_content
File "/usr/lib/python2.7/site-packages/django/template/response.py" in
rendered_content
 137.         content = template.render(context, self._request)
File "/usr/lib/python2.7/site-packages/django/template/backends/django.py"
in render
 95.             return self.template.render(context)
File "/usr/lib/python2.7/site-packages/django/template/base.py" in render
 204.                 with context.bind_template(self):
File "/usr/lib64/python2.7/contextlib.py" in __enter__
 17.             return self.gen.next()

exceptions must be old-style classes or derived from BaseException, not str

Exception Location:
/usr/lib/python2.7/site-packages/django/utils/module_loading.py in
import_string, line 23

如果我再次访问完全相同的 URL,它将起作用。

任何人都知道可能是什么原因造成的,或者我可以如何进一步调试它?

更新:

django 代码显然有一个错误,我在我的系统上修复了它。这让我看到了下一个更高的错误,这是一个导入我自己的 context_processors 的错误。这很奇怪,因为文件和函数在那里,并且是可读的,如果不是,我总是会得到这个错误,而不仅仅是间歇性地得到它。我仍然认为还有另一个更高的错误,我试图通过设置断点并运行开发服务器来找到它,但是这个错误永远不会发生。

【问题讨论】:

像这样无用的堆栈跟踪是我对 Django 的主要抱怨之一。为什么他们不能显示导致错误的 my 代码行?显示一堆 Django 内部模块并没有帮助。 【参考方案1】:

回溯可能会提供线索。具体如下行

exceptions must be old-style classes or derived from BaseException, not str

表示崩溃是由于异常定义不当造成的。

【讨论】:

是的,但这是在 django 代码中,而不是在我的代码中。那么,我如何才能找出应用程序中发生的情况,导致这种情况偶尔出现在几乎一直有效的页面上?

以上是关于django 崩溃:异常必须是旧式类或派生自 BaseException,而不是 str的主要内容,如果未能解决你的问题,请参考以下文章

约束自定义异常加密日志处理

is as运算符

is as 运算符

Java异常处理

python所有的内置类型汇总

抽象类,派生类,继承