我有mysql数据库作为django的引擎。Django认为nginx通过fastcgi在1分钟内超时(之后nginx显示"504网关超时“)。
如果数据库关闭,django会尝试重新连接到DB并等待它的响应。等待响应时间过长(超过1分钟),nginx向客户端返回504错误码。
如何在django中为db connecton设置超时?处理这个事件并返回给客户端一个漂亮的页面的正确方法是“对不起,数据库现在停止服务。请稍后再试”,而不是技术上的504错误页面?
发布于 2009-07-05 18:21:44
仅适用于DJANGO<=1.2的
您可以使用DATABASES设置的OPTIONS字典。
选项名称取决于您的DB后端,但对于PostgreSQL,它将是connect_timeout
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
…
'OPTIONS': {
'connect_timeout': 5,
}
}
}发布于 2009-07-05 18:00:34
settings.py中的DATABASE_OPTIONS是传递给正在使用的任何数据库模块的connect方法的额外关键字args的字典;根据MySqlDB关于connect的文档,正如另一个答案所说的那样,connect_timeout值确实是您想要的值(我之前把它弄错了,它因后端而异--例如,如果您的后端是SQLite,它就拼写为timeout )。
对于自定义错误页面,您可以遵循Django docs中关于编写您自己的异常中间件的建议(我相信在贡献的软件中可以找到仅显示自定义页面的简单异常中间件,但滚动您自己的异常中间件可能比在web上搜索现有代码更快,而且您可能无论如何都必须调整代码;-)。
https://stackoverflow.com/questions/1084488
复制相似问题