2016-03-08 62 views
0

我想为数据库请求设置超时时间,以便它可以处理一些长时间异常阻塞的请求。如何为oracle设置django数据库请求超时

我试着先用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)似乎是唯一的连接的东西。 (在我的情况下,它会持续连接)

有什么建议吗?

回答

0

我可以通过在sqlnet.ora而不是Django上的oracle客户端设置来完成。

SQLNET.SEND_TIMEOUT = 10 # in seconds 
SQLNET.RECV_TIMEOUT = 10 # in seconds 

这样的Django返回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 
相关问题