Como você controla os tempos limite do MySQL do SQLAlchemy?

Qual é o caminho certo para controlar tempos limites, a partir do cliente, quando executando contra um banco de dados MySQL, usando SQLAlchemy? oconnect_timeout Parâmetro de URL parece ser insuficiente.

Estou mais interessado no que acontece quando a máquina na qual o banco de dados está sendo executado, por exemplo, desaparece da rede inesperadamente. Não estou preocupado com as próprias perguntas demorando muito.

O script a seguir faz o que você esperaria (ou seja, o tempo limite após aproximadamente um segundo) sesomehost está indisponívelantes awhile loop é sempre alcançado. Mas sesomehost vai para baixodurante awhile loop (por exemplo, tente arrancar o cabo de rede após o loop ter iniciado), em seguida, o tempo limite parece demorar pelo menos 18 segundos. Existe alguma configuração ou parâmetro adicional que está faltando?

Não é de surpreender que owait_timeout variável de sessão não funciona, como eu acho que é uma variável do lado do servidor. Mas eu joguei lá só para ter certeza.

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"

questionAnswers(3)

yourAnswerToTheQuestion