You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python连接Firebird数据库时超时设置不生效问题求助

Python连接Firebird数据库时超时设置不生效问题求助

各位大佬,我最近踩了个坑:用Python连接Firebird数据库时,不管怎么设置超时,都完全不生效。比如我填错数据库的IP地址时,脚本直接卡住,要等超久才会有反应,完全没触发我设置的5秒超时逻辑。

我把当前的代码贴出来,麻烦帮我看看问题出在哪:

主脚本代码:

#!/usr/bin/python3
import fdb
import timeout

HOST = '172.19.76.10'
DBS = [
    'test_db_1102',
    'test_db_10025',
    'test_catalog',
]
USER = 'SYSDBA'
PASSWORD = '123'

def check_db(DB):
    print(DB)
    con = fdb.connect(host = HOST, database = DB, user = USER, password = PASSWORD )
    cur = con.cursor()
    cur.execute('select first(1) * from objects')
    print(cur.fetchall())

for DB in DBS:
    timeout.timeout_check(check_db(DB),5)

我自己实现的超时工具类timeout.py:

#!/usr/bin/python3
import multiprocessing
import time

def timeout_check(func, func_timeout):
    p = multiprocessing.Process(target=func)
    p.start()
    p.join(func_timeout)
    if p.is_alive():
        print ("running... let's kill it...")
        p.terminate()
        p.join()

另外我也试过用基于signal库的超时实现,但结果还是一样,超时完全不起作用。有没有大佬能帮我分析下原因,或者给个能真正生效的解决方案?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 08:08:02