Ho un'applicazione web Flask che utilizza SQLAlchemy con MySQL e ho impostato un ambito(). Ho anche un gestore di teardown_request che chiama session.remove() al termine di ogni richiesta. Per qualche strana ragione, se non vengono fatte richieste sull'app Web per un giorno o più, l'app ottiene "Operationalerror: MySQL Server è andato via".È strano che la mia connessione SQLAlchemy MySQL finisca sempre per dormire?
nella mia missione di debug, ho guardato SHOW PROCESSLIST e ha presentato le seguenti:
39817253 | sqladmin | my_host | kb_dev | Sleep | 174 |
Il 174 è il numero di secondi che il collegamento dalla mia domanda è stata "dormendo". Continua a contare se l'applicazione non fa un'altra richiesta.
Sembra che la mia applicazione mantenga la connessione a MySQL anche dopo che la mia richiesta è terminata! E di solito c'è solo un processo, non importa quante richieste faccio con la mia applicazione, simultaneamente o meno.
La mia domanda è se è normale che la connessione "stia dormendo" così a lungo? Sono abbastanza sicuro che il sonno prolungato sta causando a MySQL il taglio della connessione dopo un certo timeout che a sua volta causa l'errore "OperationalError: Mysql è andato via".
Hai risolto il problema? L'impostazione di pool_recycle non funziona per me. –