我想为数据库请求设置超时,以便它可以处理长时间异常阻止的某些请求。
我首先使用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'是一个无效的关键字参数 功能
此外,由于属性(connect_timeout
)似乎仅用于连接,因此不是我想要的。
(在我的例子中,它将具有持久连接)
有什么建议吗?
答案 0 :(得分:0)
我可以通过sqlnet.ora
上的oracle客户端设置而不是Django
来完成。
SQLNET.SEND_TIMEOUT = 10 # in seconds
SQLNET.RECV_TIMEOUT = 10 # in seconds
当Django达到我指定的超时(在这里10秒)时,使用oracle错误代码返回djang.db.DatabaseError
异常
您可以获得如下所示的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