如何在django中设置数据库连接超时

如何在django中设置数据库连接超时,django,Django,我有mysql数据库作为django的引擎。Django通过fastcgi使用Think nginx,超时时间为1分钟(之后nginx显示“504网关超时”) 若数据库发生故障,django将尝试重新连接到DB并等待它的响应。等待响应时间太长(超过1分钟),nginx返回给客户端504错误代码 如何在django中为db connecton设置超时?还有什么正确的方法来处理这个事件,并返回给客户端一个漂亮的页面,上面写着“对不起,数据库现在停止服务,请稍后再试”,而不是技术504错误页面 set

我有mysql数据库作为django的引擎。Django通过fastcgi使用Think nginx,超时时间为1分钟(之后nginx显示“504网关超时”)

若数据库发生故障,django将尝试重新连接到DB并等待它的响应。等待响应时间太长(超过1分钟),nginx返回给客户端504错误代码


如何在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
。只接受“超时”,我希望它是正确的替代品。@zeycus
connect\u timeout
是Postgres的正确选项。psycopg2 2.7.3.2如果使用
超时
,则出现“连接选项无效”的错误。Django文档只提到Sqlite用户的
timeout
。这真的很有帮助。如何获得支持的选项?我们能找到什么办法吗?
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        …
        'OPTIONS': {
            'connect_timeout': 5,
        }
    }
}