我想为数据库请求设置超时,以便它可以处理某些异常长时间阻止的请求。
我首先尝试了以下带有connect_timeout
属性的配置。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'orcl',
'USER': 'smkim',
'PASSWORD': '1123',
'HOST': '168.192.15.18',
'OPTIONS' : {
"connect_timeout": 60,
},
'CONN_MAX_AGE' : 60,
'PORT': '1521',
}
}
但是,返回此异常似乎不起作用。
TypeError:“ connect_timeout”是此函数的无效关键字参数
另外,这不是我想要的东西,因为attribute(connect_timeout
)似乎仅用于连接。(就我而言,它将具有持久连接)
有什么建议么?
我可以通过oracle客户端设置onsqlnet.ora
而不是on来做到这一点Django
。
SQLNET.SEND_TIMEOUT = 10 # in seconds
SQLNET.RECV_TIMEOUT = 10 # in seconds
这样,当Djangodjang.db.DatabaseError
达到我指定的超时时间(此处为10秒)时,Django将使用oracle错误代码返回Exception。
您可以获取如下的oracle错误代码
try:
models.A.objects.get(id=1) # In here, timeout occur
except django.db.DatabaseError as e:
oracleErr = e.args[0]
print 'errorMsg : %s' % oracleErr.message
print 'errorCode : %d' % oracleErr.code
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句