1

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

OperationalError: (2003, "Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (110)")

在一个“正常”的网站上,我想你不会太担心:浏览器显示一个 500 错误页面,访问者稍后再试一次。在我的情况下,丢失请求发布的信息不是一种选择,我想知道如何处理这个问题?我会尝试捕捉这个异常,等待连接恢复(延迟不是问题),然后继续该过程。但是由于异常可能发生在代码中的任何地方,我有点不知道如何继续。

谢谢你的建议。

4

2 回答 2

1

您可以在 yourproject/wsgi.py 中制作自己的 WSGI 应用程序来装饰 django 的 wsgi 应用程序。

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

但实际上,您应该修复客户端。客户端不应期望 24/7 连接到工作服务器。在那之前,我不会把这个桌面客户端作为用户来推销。

于 2012-06-07T11:58:09.617 回答
1

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

或者您可以装饰您的视图并在此处结束通话。

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

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

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

于 2012-06-07T16:18:50.503 回答