Django:如何正确处理数据库连接错误

时间:2012-06-07 11:00:01

标签: python mysql django

我有一个桌面应用程序,它将POST请求发送到django应用程序存储结果的服务器。数据库服务器和Web服务器不在同一台机器上,有时连接会在很短的时间内丢失,但会导致某些请求出现连接错误:

  

OperationalError:(2003,“无法连接到'xxx.xxx.xxx.xxx'上的MySQL服务器'(110)”)

在“普通”网站上,我猜你不用太担心:浏览器显示500错误页面,访问者稍后再试。 在我的情况下,请求发布的丢失信息不是一个选项,我想知道如何处理这个?我试着赶上这个异常,等待连接回来(滞后不是问题),然后继续这个过程。但是,由于代码中的任何地方都会发生异常,因此我对如何继续进行操作有点困惑。

感谢您的建议。

2 个答案:

答案 0 :(得分:1)

你可以在你的项目/ wsgi.py中制作装饰django的wsgi应用程序的your own WSGI application

如果你的wsgi应用程序装饰器没有从装饰的应用程序中获得可接受的,它可能会等待一段时间并稍后再试。

但实际上,你应该修复客户端。客户端不应期望24/7连接到工作服务器。在此之前,我不会将此桌面客户端作为用户。

答案 1 :(得分:1)

您可以使用带有process_view方法的中间件和try / except包装您的调用。

或者您可以装饰您的视图并将呼叫包裹在那里。

或者您可以使用基于类的视图,其基类在其调度方法或overriden.dispatch上有方法装饰器。

真的,你有很多解决方案。

现在,如上所述,您可能也想修改桌面应用程序!