ユーザーが画像にアクセスできるpythonサービス(pyamf)を書いています。すべての画像は中央サーバーに保存されます。Python サービスは、サーバーにネットワーク アクセスできるサテライト マシンで実行されます。サービスは次のように動作する必要があります。
- ファイルが存在するかどうかをローカルで確認し、存在する場合はそれを使用します。
- ファイルが現在サーバーから転送されているかどうかをローカルで確認します (file.part が存在し、サイズが変化しています)。その場合は、ダウンロードが完了するまで待ってから、ファイルを使用してください。
- ファイルが存在せず、ファイルがダウンロードされていない場合は、urlretrieve を介してファイルをダウンロードします。
問題は、Apache の複数のスレッドにあります。スレッドは同時にファイルの存在チェックに到達しているため、すべてのスレッドがファイルをダウンロードする必要があると考えています。言うまでもなく、これは良くありません。
この競合状態を処理する正しい方法は何ですか?
ありがとう!