を追加してみてください
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を設定します エンジン構成で、または設定