外部リソースを「ロック」したいと考えています。この場合、Amazon S3 と同様に、ラックスペース クラウド サーバーに保存された「ブロブ」になります。(Python を使用)
競合状態を次のように処理したい:
- 最初のプロセスはリソースのロックを作成します
- 最初のプロセスがリソースの編集を開始
- 2 番目のプロセスが同じリソースを編集しようとすると、リソースがロックされていることがわかります。
- ロックが解除されたときに通知される 2 番目のプロセス要求
- 最初のプロセスはリソースの編集を終了し、ロックを解除します
- 2 番目のプロセスは解放されたリソースの通知を受け取り、独自の編集を行うことができます
Memcached または Redis を使用してロックを作成したいのですが、別のメカニズムでも問題ありません。
これのほとんどは非常に単純です。私が苦労しているのは、強制的に待機して再試行するのではなく、ロックが解除されたときに 2 番目のプロセスに通知する方法です。
Redis にはパブリッシュ/サブスクライブ機能がありますが、これはこの状況での使用に適していますか?
または、この問題を解決するために必要な他の方法はありますか?
本当にありがとう!