Mysql
 sql >> база данни >  >> RDS >> Mysql

Тази локална сесия Flask-SQLAchemy причинява ли грешка на MySQL сървъра да е изчезнал?

Опитайте да добавите

app.teardown_request(Exception=None)

Декоратор, който се изпълнява в края на всяка заявка. В момента изпитвам подобен проблем и изглежда, че днес наистина го разреших с помощта.

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

Не използвам Flask-SQLAlchemy Само суров SQLAlchemy , така че може да има разлики за вас.

От Документи

В моя случай отварям нова scoped_session за всяка заявка, изисквайки от мен да я премахна в края на всяка заявка (Flask-SQLAlchemy може да няма нужда от това). Също така на функцията teardown_request се предава Exception ако се случи по време на контекста. В този сценарий, ако е възникнало изключение (евентуално причина транзакцията да не бъде премахната или да се нуждае от връщане назад), проверяваме дали е имало изключение и връщаме назад.

Ако това не работи за моето собствено тестване, следващото нещо, което щях да направя, беше session.commit() при всяко разрушаване, само за да се уверите, че всичко се промива

АКТУАЛИЗАЦИЯ :също така изглежда, че MySQL обезсилва връзките след 8 часа, което води до повреда на сесията.

задайте pool_recycle=3600 на конфигурацията на вашия двигател или на настройка


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. конфигурацията на инсталацията на mysql сървъра е неуспешна ИЛИ не може да стартира услугата

  2. Условен mySQL израз. Ако е вярно UPDATE, ако е false INSERT

  3. SQL INSERT от SELECT

  4. MySQL ранг в случай на връзки

  5. Как работи функцията UCASE() в MySQL