Django - 连接字符串中的自定义SQL
我在使用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并不会为每个视图打开一个新的连接。