Django - 连接字符串中的自定义SQL

0 投票
1 回答
1153 浏览
提问于 2025-04-15 15:07

我在使用MySql的时候遇到了一些问题,因为达到了max_user_connections的限制,导致系统停机。

默认的连接超时时间是8小时,所以一旦达到这个限制(而且在我们的共享主机上无法直接关闭连接),我只能等8小时,直到这些连接超时。

我想在我的连接字符串中添加以下代码:

SET wait_timeout=300;

这样可以把超时时间改成5分钟。你可以想象,处理5分钟的停机时间比8小时要好得多。;)

有没有好的方法可以在django中在连接字符串中添加自定义SQL呢?

如果没有,有人建议我们写一些中间件,在视图处理之前运行这些SQL。

这可能可行,但我会更放心,如果能确保每个连接都一定会执行这个查询,即使每个视图打开了多个连接。

谢谢!

PS - 在你告诉我应该去找出导致连接无法关闭的代码之前,别担心!我们正在处理这个问题,但我想要额外的保障,以防再出现8小时的停机。

1 个回答

1

你可以在连接打开时,设置一个命令列表发送给MySQL,这个列表是在settings.py文件里的DATABASE_OPTIONS字典中设置的。

顺便提一下,Django并不会为每个视图打开一个新的连接。

撰写回答