分散システムで処理されているジョブを説明するデータベーステーブルがあります。そのため、ジョブ全体が多くの小さなパーツに分割され、各パーツは独自の環境の異なるマシンで処理されます。
各プロセスがどのように進んだかを簡単に記録したいので、各ノードはSQLAlchemyを使用して同じジョブテーブルに接続し、UnicodeTextフィールドの最後にジョブ番号とステータスを追加しています。
私は次のようなものを見ることを期待しています:
Part 1: complete<br/>
Part 2: complete<br/>
Part 3: error<br/>
Part 4: complete<br/>
...etc
process.log += "Part 1: complete\n"
パーツの処理が終了したら、各ノードで単純にを実行します。次に、session.commit()
部品番号が故障していることは承知しており、私の目的には問題ありませんが、代わりに、部品全体のエントリが数個しか取得されていないことが発生しています。多くのジョブが同時に終了していて、append+=を実行するのはスレッドセーフではないためだと思います。
私はセッションが苦手なので、セッションを構成するためのすべての秘訣を知りません。NullPoolを使用してみましたが無駄になりました。
このような分散環境で追加操作スレッドを安全にする方法はありますか?