如何为oracle设置django数据库请求超时
how to set django database request timeout for oracle
我想为数据库请求设置超时,以便它可以处理一些异常长时间阻塞的请求。
我首先尝试了以下带有 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' is an invalid keyword argument for this
function
此外,这不是我想要的,因为属性(connect_timeout
)似乎只用于连接。
(在我的例子中,它将有持久连接)
有什么建议吗?
我可以通过 sqlnet.ora
上的 oracle 客户端设置来完成,而不是 Django
。
SQLNET.SEND_TIMEOUT = 10 # in seconds
SQLNET.RECV_TIMEOUT = 10 # in seconds
因此 Django return djang.db.DatabaseError
当达到我指定的超时时出现 oracle 错误代码异常(这里是 10 秒)
您可以得到如下的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
我想为数据库请求设置超时,以便它可以处理一些异常长时间阻塞的请求。
我首先尝试了以下带有 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' is an invalid keyword argument for this function
此外,这不是我想要的,因为属性(connect_timeout
)似乎只用于连接。
(在我的例子中,它将有持久连接)
有什么建议吗?
我可以通过 sqlnet.ora
上的 oracle 客户端设置来完成,而不是 Django
。
SQLNET.SEND_TIMEOUT = 10 # in seconds
SQLNET.RECV_TIMEOUT = 10 # in seconds
因此 Django return djang.db.DatabaseError
当达到我指定的超时时出现 oracle 错误代码异常(这里是 10 秒)
您可以得到如下的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