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