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. 制限付きのDjangoprefetch_related

    2. MySQL:intフィールドの値を切り替える簡単な方法

    3. OracleCommandSQLパラメータのバインド

    4. SQL:2つの異なるauto_incrementを使用してリレーションテーブルを作成する