sql >> Databasteknik >  >> RDS >> Mysql

Orsakar den här trådlokala Flask-SQLAchemy-sessionen att ett MySQL-server har försvunnit fel?

Prova att lägga till en

app.teardown_request(Exception=None)

Decorator, som utförs i slutet av varje begäran. Jag har för närvarande ett liknande problem, och det verkar som om jag idag faktiskt har löst det med hjälp av.

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

Jag använder inte Flask-SQLAlchemy Endast rå SQLAlchemy , så det kan ha skillnader för dig.

Från Dokument

I mitt fall öppnar jag en ny scoped_session för varje begäran, vilket kräver att jag tar bort den i slutet av varje begäran (Flask-SQLAlchemy kanske inte behöver detta). Dessutom skickas teardown_request-funktionen ett Exception om det inträffade under sammanhanget. I det här scenariot, om ett undantag inträffade (möjligen orsakade att transaktionen inte tas bort, eller behöver en återställning), kontrollerar vi om det fanns ett undantag och återställer.

Om detta inte fungerar för min egen testning, var nästa sak jag skulle göra en session.commit() vid varje rivning, bara för att se till att allt spolas ut

UPPDATERING:det verkar också som att MySQL ogiltigförklarar anslutningar efter 8 timmar, vilket gör att sessionen skadas.

ställ in pool_recycle=3600 på din motorkonfiguration, eller till en inställning


  1. Är en VARCHAR(20000) giltig i MySQL?

  2. FULLTEXT-sökning i MySQL returnerar inga rader

  3. Hittade:bit, förväntat:boolean efter Hibernate 4-uppgradering

  4. Varning:mysqli_connect():Okänd MySQL-servervärd