Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy ta lokalna dla wątku sesja Flask-SQLAchemy powoduje błąd serwera MySQL?

Spróbuj dodać

app.teardown_request(Exception=None)

Dekorator, który wykonuje się na końcu każdego żądania. Obecnie mam podobny problem i wygląda na to, że dzisiaj faktycznie go rozwiązałem.

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

Nie używam Flask-SQLAlchemy Tylko surowa SQLAlchemy , więc może się to różnić dla Ciebie.

Z Dokumentów

W moim przypadku otwieram nową scoped_session dla każdego żądania, wymagając ode mnie usunięcia go na końcu każdego żądania (Flask-SQLAlchemy może tego nie potrzebować). Ponadto funkcja teardown_request jest przekazywana jako Exception jeśli wystąpił w kontekście. W tym scenariuszu, jeśli wystąpił wyjątek (prawdopodobnie powodujący, że transakcja nie została usunięta lub wymaga wycofania), sprawdzamy, czy wystąpił wyjątek i wycofujemy.

Jeśli to nie zadziała w przypadku moich własnych testów, następną rzeczą, którą zamierzałem zrobić, była session.commit() przy każdym porzuceniu, aby upewnić się, że wszystko się spłukuje

AKTUALIZACJA :wygląda na to, że MySQL unieważnia połączenia po 8 godzinach, powodując uszkodzenie sesji.

ustaw pool_recycle=3600 w konfiguracji silnika lub do ustawienia


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zorganizować nadmiar tabel mysql?

  2. 'SQLSTATE[HY093]:Nieprawidłowy numer parametru:liczba powiązanych zmiennych nie odpowiada liczbie tokenów'

  3. Zmiana wygenerowanej nazwy klucza obcego w Hibernate

  4. Wydajność MySQL — klauzula IN a równanie (=) dla pojedynczej wartości

  5. Mieszanie MySQL Damerau–Levenshtein Fuzzy z Like Wildcard