セッションオブジェクトを作成するときに、定期的にflush()を実行するように設定できますか?SQLAlchemy session.flush()を定期的に設定する方法
私はこの機能が必要なのは、セッションのスコープの下で、メモリ内に短いバックグラウンドジョブが実行されているためです。 DBからの進捗状況をクライアントが定期的に問い合わせることができるように、プログラムがflush()を使用してDBのジョブの進行状況を定期的に更新するようにします。
現在、私の解決策は、session.flush()を定期的に実行する別のスレッドを使用しています。
ありがとうございます!
変更を他のクライアントに見せるには、 'commit()'を呼び出す必要があります。 'flush()'も働くという事実は、あなたが使っている分離レベルの副作用です。あなたの目標を達成するために、あなたの仕事の進捗状況を報告したいときはいつも、あなたのモデルを更新してコミットしてください。別のスレッドは必要ありません。 – univerio
'commit()'を起動していただきありがとうございます。いくつかの実験の後、セッションのトランザクションレベルがREPEATABLE READであることがわかりましたが、クライアントは未コミットの更新を読み取ることができました。なぜこれが起こるか知っていますか? – 8090PZ
あなたは 'autoflush'をオンにしていて、autoflushを起動しているか、' autocommit'をオンにしています。 – univerio