sql >> Base de Datos >  >> RDS >> Mysql

¿Esta sesión Flask-SQLAchemy de subproceso local provoca un error de servidor MySQL?

Intenta agregar un

app.teardown_request(Exception=None)

Decorador, que se ejecuta al final de cada solicitud. Actualmente estoy experimentando un problema similar, y parece que hoy lo resolví usando.

@app.teardown_request
def teardown_request(exception=None):
    Session.remove()
    if exception and Session.is_active:
        print(exception)
        Session.rollback()

No uso Flask-SQLAlchemy Solo SQLAlchemy sin procesar , por lo que puede tener diferencias para usted.

De los documentos

En mi caso, abro una nueva scoped_session para cada solicitud, lo que requiere que lo elimine al final de cada solicitud (Flask-SQLAlchemy puede que no necesite esto). Además, a la función teardown_request se le pasa una Exception si uno ocurrió durante el contexto. En este escenario, si se produjo una excepción (que posiblemente provoque que la transacción no se elimine o necesite una reversión), verificamos si hubo una excepción y la revertimos.

Si esto no funciona para mis propias pruebas, lo siguiente que iba a hacer era session.commit() en cada desmontaje, solo para asegurarse de que todo esté enjuagado

ACTUALIZACIÓN:también parece que MySQL invalida las conexiones después de 8 horas, lo que provoca que la sesión se corrompa.

establecer pool_recycle=3600 en la configuración de su motor, o en una configuración