2015-04-01 24 views
2

偶爾我會遇到一個問題,即對sybase的查詢需要很長時間。我想等待30秒左右,然後超時。這裏是我的代碼:如何在Python中使用Sybase模塊設置超時?

import Sybase 

db = Sybase.connect('server','name','pass','database') 
c = db.cursor() 
c.execute("select statement that takes a long time") 
list1 = c.fetchall() 

print list1 

如何重寫我的代碼,這樣,當查詢時間超過30秒,它會產生一個空列表1?

+0

據我所知,沒有。我會嘗試通過電子郵件[email protected]詢問python-sybase郵件列表,但是我看到[前一個問題](http://sourceforge.net/p/python-sybase/mailman/消息/ 28652480 /)在那裏詢問同樣的事情(幾乎)沒有迴應。我沒有看到任何文檔可以指示任何方法的「timeout」參數。 – 2015-04-01 16:54:55

回答

1

我看到兩個posibilitiues:

  1. (硬)配置資源上的服務器端限制。這裏是詳細信息1,2
  2. (更簡單)在單獨的線程中運行您的Python代碼,並在命中30次限制後將其殺死。這裏宥有一個example

在你的情況爲2選項:

def func(): 
    db = Sybase.connect('server','name','pass','database') 
    c = db.cursor() 
    c.execute("select statement that takes a long time") 
    list1 = c.fetchall() 
    print list1 

A = KThread(target=func) 
A.start() 
time.sleep(30) 
if not A.isAlive(): 
    A.kill() 

GL!

相關問題