如何在django中设置数据库连接超时
我有mysql数据库作为django的引擎。Django通过fastcgi使用Think nginx,超时时间为1分钟(之后nginx显示“504网关超时”) 若数据库发生故障,django将尝试重新连接到DB并等待它的响应。等待响应时间太长(超过1分钟),nginx返回给客户端504错误代码如何在django中设置数据库连接超时,django,Django,我有mysql数据库作为django的引擎。Django通过fastcgi使用Think nginx,超时时间为1分钟(之后nginx显示“504网关超时”) 若数据库发生故障,django将尝试重新连接到DB并等待它的响应。等待响应时间太长(超过1分钟),nginx返回给客户端504错误代码 如何在django中为db connecton设置超时?还有什么正确的方法来处理这个事件,并返回给客户端一个漂亮的页面,上面写着“对不起,数据库现在停止服务,请稍后再试”,而不是技术504错误页面 set
如何在django中为db connecton设置超时?还有什么正确的方法来处理这个事件,并返回给客户端一个漂亮的页面,上面写着“对不起,数据库现在停止服务,请稍后再试”,而不是技术504错误页面
settings.py中的DATABASE\u OPTIONS
是一组额外的关键字参数,这些参数被传递给正在使用的任何数据库模块的connect
方法;per在connect
上的文档中,正如另一个答案所说的那样,connect\u timeout
值确实是您想要的值(我以前把它搞错了,它因后端而异——例如,如果您的后端是SQLite,它的拼写是timeout
)
对于自定义错误页面,您可以按照中关于编写自己的异常中间件的建议进行操作(我确信,在贡献的软件中可以找到只显示自定义页面的简单异常中间件,但使用自己的异常中间件可能比在web上搜索现有代码要快,而且您可能无论如何都必须调整该代码;-).仅适用于django这是一种通用设置,可用于所有django支持的数据库后端吗?(我在谷歌上搜索了一下,只发现它与SQLAlchemy有关)不,不是,我的坏——现在修复了——注意,没有一种方法可以适用于所有DBs,但是connect_timeout适用于MySql,timeout适用于SQLite,等等(总是作为数据库_选项中的键,在settings.py中)由于Django 1.2()“连接超时”似乎也过时了,至少对于Django 1.9而言,数据库选项似乎已更改为OPTIONS
。只接受“超时”,我希望它是正确的替代品。@zeycusconnect\u timeout
是Postgres的正确选项。psycopg2 2.7.3.2如果使用超时
,则出现“连接选项无效”的错误。Django文档只提到Sqlite用户的timeout
。这真的很有帮助。如何获得支持的选项?我们能找到什么办法吗?
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
…
'OPTIONS': {
'connect_timeout': 5,
}
}
}