2016-03-08 138 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