在WSGI领导下,我有一个MySQL与Django一起消失。我在stackoverflow上找到了此问题的条目,但没有专门针对Django。 Google除了解决方法之外没有帮助(例如不时对网站进行轮询,或增加数据库超时)。没有什么确定的。从技术上讲,Django和/或MySQLDB(我正在使用最新的1.2.3C1)应该尝试重新连接服务器是否挂起连接,但这并非发生。在没有解决方法的情况下,如何解决这个问题?

有帮助吗?

解决方案

show variables like 'wait_timeout';

这是设置将返回“ mysql消失”错误
将其设置为非常大的价值,以防止它“消失”
或在一定期后简单重新启动MySQL连接

其他提示

Django开发人员为所有此类问题提供了一个简短的答案 https://code.djangoproject.com/ticket/21597#comment:29

  • 设置为 wontfix

实际上,这是#15119之后的预期行为。请参阅该票的理由。

如果您遇到了这个问题,并且不想了解发生了什么,请不要重新打开这张票,只需这样做:

  • 推荐解决方案:关闭与 from django.db import connection; connection.close() 当您知道您的程序将很长一段时间内会闲置时。

  • 解决方案:增加wait_timeout,因此比程序的最大空闲时间更长。

在这种情况下,空闲时间是两个连续数据库查询之间的时间。

  • 您可以在处理视图之前创建中间件()MySQL连接(如果按时计时,则将重新连接)

  • 您还可以添加中间件来捕获异常,重新连接和重试视图(我认为我更喜欢上述解决方案,因为它应该更简单,但是在技术上应该使用,并且假设超时很少见。这也假设失败的视图没有方面效果,这是一个理想的属性,但很难做到,尤其是如果您在视图中写入文件系统以及DB。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top