Pythonは、分散ロックのRedisを構築します

分散ロック

実際のシナリオでは、我々は、複数のワーカーは、おそらくマシンで、別のマシンに分散することができるしているかもしれませんが、一つだけのワーカーが同時にロックを保持することができ、今回は分散ロックを使用する必要があります。

Pythonライブラリ、達成することが推奨されRedlock-Pyの(Python実装を)。

通常の状況下では、労働者は、ロックを取得し、自分のタスクを処理、自動的に完了した後に保持されているロックを解除し、それは少し馴染みの感じではありません、ここで、我々は単にデコレータを実装、私たちのコンテキストマネージャを考えるのは簡単ですwith...as...構文。

  • インストールRedlock-PY
$ pip install redlock-py
  • これはpythonで来るcontextmanagerデコレータトライコンテキスト管理
from contextlib import contextmanager
from redlock import Redlock

@contextmanager
def worker_lock_manager(key, ttl, **kwargs): """ 分布式锁 :param key: 分布式锁ID :param ttl: 分布式锁生存时间 :param kwargs: 可选参数字典 :return: None """ redis_servers = [{ 'host': '127.0.0.1', 'port': 6379, 'db': 0, 'password': 'pwd' }] rlk= Redlock(redis_servers) # 获取锁 lock = rlk.lock(key, ttl) yield lock # 释放锁 rlk.unlock(lock) 

それを使用する方法

with worker_lock_manager('unique_key', 1000) as w_lock: if w_lock is False: return do_something()

 

おすすめ

転載: www.cnblogs.com/ExMan/p/12189762.html