我有一个桌面应用程序,它将POST请求发送到django应用程序存储结果的服务器。数据库服务器和Web服务器不在同一台机器上,有时连接会在很短的时间内丢失,但会导致某些请求出现连接错误:
OperationalError:(2003,“无法连接到'xxx.xxx.xxx.xxx'上的MySQL服务器'(110)”)
在“普通”网站上,我猜你不用太担心:浏览器显示500错误页面,访问者稍后再试。 在我的情况下,请求发布的丢失信息不是一个选项,我想知道如何处理这个?我试着赶上这个异常,等待连接回来(滞后不是问题),然后继续这个过程。但是,由于代码中的任何地方都会发生异常,因此我对如何继续进行操作有点困惑。
感谢您的建议。
答案 0 :(得分:1)
你可以在你的项目/ wsgi.py中制作装饰django的wsgi应用程序的your own WSGI application。
如果你的wsgi应用程序装饰器没有从装饰的应用程序中获得可接受的,它可能会等待一段时间并稍后再试。
但实际上,你应该修复客户端。客户端不应期望24/7连接到工作服务器。在此之前,我不会将此桌面客户端作为用户。
答案 1 :(得分:1)
您可以使用带有process_view方法的中间件和try / except包装您的调用。
或者您可以装饰您的视图并将呼叫包裹在那里。
或者您可以使用基于类的视图,其基类在其调度方法或overriden.dispatch上有方法装饰器。
真的,你有很多解决方案。
现在,如上所述,您可能也想修改桌面应用程序!