sql >> Databáze >  >> RDS >> Mysql

Způsobuje tato relace Flask-SQLAchemy místního vlákna chybu, že server MySQL zmizel?

Zkuste přidat

app.teardown_request(Exception=None)

Dekorátor, který se provede na konci každého požadavku. Momentálně se potýkám s podobným problémem a zdá se, jako bych ho dnes skutečně vyřešil pomocí.

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

Nepoužívám Flask-SQLAlchemy Pouze Raw SQLAlchemy , takže to může mít pro vás rozdíly.

Z Dokumentů

V mém případě otevřu nový scoped_session pro každý požadavek, který vyžaduje, abych jej na konci každého požadavku odstranil (Flask-SQLAlchemy nemusí to potřebovat). Také funkci teardown_request je předána Exception pokud k nějaké došlo během kontextu. V tomto scénáři, pokud došlo k výjimce (možná způsobující, že transakce nebude odstraněna nebo bude potřeba vrácení změn), zkontrolujeme, zda došlo k výjimce, a vrátíme zpět.

Pokud to nefunguje pro mé vlastní testování, další věc, kterou jsem chtěl udělat, bylo session.commit() při každém odtržení, jen aby se ujistil, že je vše splachováno

AKTUALIZACE:také se zdá, že MySQL zruší platnost připojení po 8 hodinách, což způsobí poškození relace.

nastavte pool_recycle=3600 na konfiguraci vašeho motoru nebo na nastavení <časový limit MySQL. To by ve spojení se správným rozsahem relace (uzavření relací) mělo stačit.




  1. Získejte zřetelný součet spojeného sloupce tabulky

  2. AWS Lambda – ukládání do mezipaměti MySQL

  3. ckfinder php 2.6.2 nastavení zobrazení, zobrazení, řazení nefunguje

  4. Funkce SQL velmi pomalá ve srovnání s dotazem bez funkce wrapper