実稼働環境設定のためにuWSGI + NginxでラップされたPythonフラスコAPIがあります。私は4人のNginxワーカーと、以下のように設定されたワーカー1スレッドを持っています。プロセス= 4スレッド= 1uWSGI Workersが同じJSONファイルに書き込む
API Postを発行すると、ポストはコードの異なる部分でjsonファイルを書き込み、読み取ります。
複数のAPIリクエストを並行して発行すると、期待通りにこれらの4人のNginxワーカーに配信されます。そして彼らは先に進み、要求を並行して処理します。複数のプロセスが同じファイルを読み書きしているときに、これによってjson ValueErrorsが発生することがあります。
このシナリオをどのように克服できますか?これは私のAPI内ではマルチプロセッシングではありません。だから私のjsonの更新コード内のPythonのマルチプロセッシングのロックを使用して私の問題を解決することはありません。
jsonファイルを一度に1人ずつ更新できるようにします。 uwsgiの労働者にロックを共有する方法はありますか?
jsonファイルを「読み書き」すると、ディスクを意味するのでしょうか?読者が読んで書いているところで、より良い文脈を与えるために、読者が読んで(有益な場合)有益かもしれません。 – SteveJ