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"