Tengo una aplicación web Flask que utiliza SQLAlchemy con MySQL, y he configurado una scopedsession(). También tengo un controlador teardown_request que llama a session.remove() después de finalizar cada solicitud. Por alguna extraña razón, si no se realizan solicitudes en la aplicación web durante un día o más, la aplicación obtiene "Operationalerror: MySQL Server se ha ido".¿Es extraño que mi conexión SQLAlchemy MySQL siempre termine durmiendo?
En mi misión depuración, miré SHOW PROCESSLIST y vieron los siguientes:
39817253 | sqladmin | my_host | kb_dev | Sleep | 174 |
El 174 es el número de segundos que la conexión de mi solicitud haya sido "durmiendo". Sigue contando si la aplicación no realiza otra solicitud.
Parece que mi aplicación se aferra a la conexión a MySQL incluso después de que mi solicitud haya finalizado. Y generalmente hay solo un proceso, sin importar cuántas solicitudes haga con mi aplicación, simultáneamente o no.
Mi pregunta es si es normal que la conexión esté "durmiendo" tanto tiempo? Estoy bastante seguro de que la suspensión prolongada está haciendo que MySQL corte la conexión después de un cierto tiempo de espera que a su vez está causando el error "OperationalError: Mysql se ha ido".
¿Ha resuelto el problema? Establecer pool_recycle no funciona para mí. –