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
相关产品推荐
相关产品推荐

