sql >> Database teknologi >  >> RDS >> Mysql

Forårsager denne tråd-lokale Flask-SQLAchemy-session, at en MySQL-server er gået væk fejl?

Prøv at tilføje en

app.teardown_request(Exception=None)

Dekoratør, som udfører i slutningen af ​​hver anmodning. Jeg oplever i øjeblikket et lignende problem, og det ser ud til, at jeg i dag faktisk har løst det ved hjælp af.

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

Jeg bruger ikke Flask-SQLAlchemy Kun rå SQLAlchemy , så det kan have forskelle for dig.

Fra Docs

I mit tilfælde åbner jeg en ny scoped_session for hver anmodning, hvilket kræver, at jeg fjerner den i slutningen af ​​hver anmodning (Flask-SQLAlchemy har muligvis ikke brug for dette). Teardown_request-funktionen videregives også en Exception hvis en opstod under konteksten. I dette scenarie, hvis der opstod en undtagelse (muligvis forårsager transaktionen ikke at blive fjernet, eller har brug for en rollback), kontrollerer vi, om der var en undtagelse, og rollback.

Hvis dette ikke virker til min egen test, var den næste ting jeg skulle gøre en session.commit() ved hver nedrivning, bare for at sikre, at alt skyller ud

OPDATERING:Det ser også ud til, at MySQL ugyldiggør forbindelser efter 8 timer, hvilket forårsager, at sessionen bliver beskadiget.

sæt pool_recycle=3600 på din motorkonfiguration eller til en indstilling


  1. Opgradering af en varchar-kolonne til enum type i postgresql

  2. Returner ISO-ugenummeret fra en dato i SQL Server (T-SQL)

  3. Forbindelsesstrengparametre for gemte specifikationer

  4. Mærkelig MySQL skrivebeskyttet fejl