使用SQLAlchemy从客户端运行MySQL数据库时,控制超时的正确方法是什么?该connect_timeout
URL参数似乎是不够的.
我对运行数据库的机器发生的事情更感兴趣,例如,意外地从网络中消失.我并不担心查询本身需要太长时间.
如果somehost 在到达while
循环之前不可用,则以下脚本执行您期望的操作(即,大约一秒后超时).但是,如果,某下降过程中的while
循环(例如,尝试唬弄了其网线循环开始后),然后超时似乎至少需要18秒.我缺少一些额外的设置或参数吗?
wait_timeout
会话变量不起作用并不奇怪,因为我认为这是一个服务器端变量.但我把它扔在那里只是为了确保.
from sqlalchemy import *
from sqlalchemy.exc import *
import time
import sys
engine = create_engine("mysql://user:password@somehost/test?connect_timeout=1")
try:
engine.execute("set session wait_timeout = 1;")
while True:
t = time.time()
print t
engine.execute("show tables;")
except DBAPIError:
pass
finally:
print time.time() - t, "seconds to time out"
Run Code Online (Sandbox Code Playgroud)