Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Phiên Flask-SQLAchemy luồng cục bộ này có gây ra lỗi máy chủ MySQL đã biến mất không?

Thử thêm một

app.teardown_request(Exception=None)

Trình trang trí, thực thi ở cuối mỗi yêu cầu. Tôi hiện đang gặp sự cố tương tự và có vẻ như hôm nay tôi đã thực sự giải quyết được vấn đề đó bằng cách sử dụng.

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

Tôi không sử dụng Flask-SQLAlchemy Chỉ SQLAlchemy thô , vì vậy nó có thể có sự khác biệt cho bạn.

Từ Tài liệu

Trong trường hợp của tôi, tôi mở một scoped_session mới cho mỗi yêu cầu, yêu cầu tôi xóa nó ở cuối mỗi yêu cầu (Flask-SQLAlchemy có thể không cần cái này). Ngoài ra, hàm teardown_request được chuyển một Exception nếu một cái xảy ra trong ngữ cảnh. Trong trường hợp này, nếu một ngoại lệ xảy ra (có thể khiến giao dịch không bị xóa hoặc cần khôi phục), chúng tôi sẽ kiểm tra xem có ngoại lệ nào không và khôi phục.

Nếu điều này không hoạt động đối với thử nghiệm của riêng tôi, điều tiếp theo tôi sẽ làm là session.commit() ở mỗi giọt nước, chỉ để đảm bảo mọi thứ đều tuôn ra

CẬP NHẬT:nó cũng xuất hiện MySQL làm mất hiệu lực kết nối sau 8 giờ, khiến Phiên bị hỏng.

đặt pool_recycle=3600 trên cấu hình công cụ của bạn hoặc cài đặt


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự cố LAG / LEAD của MySQL

  2. Cách sửa đổi tập lệnh PHP / Jquery / Ajax để có nhiều vị trí trường biểu mẫu

  3. Làm thế nào để truy xuất nhiều hàng từ thủ tục được lưu trữ trong MySQL?

  4. Làm thế nào để trả về NULL khi kết quả trống?

  5. Lựa chọn động các tùy chọn php và mysql