如何使用Python中的Sybase模块设置超时?

时间:2015-04-01 16:43:37

标签: python sybase

偶尔我会遇到一个问题,即对sybase的查询需要很长时间。我想等30秒左右,然后超时。这是我的代码:

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?

1 个答案:

答案 0 :(得分:1)

我看到两个posibilitiues:

  1. (Harder)在服务器端配置资源限制。以下是详细信息12
  2. (更简单)在单独的线程中运行您的Python代码并在达到30秒限制后终止它。在这里,你有一个example
  3. 在您的情况下为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!