RedisLock

class deepfos.lib.redis.RedisLock(key, redis_client=None, renew_interval=5, expire_sec=10, raises=None, blocking_timeout=0)

通过Redis实现的锁对象

参数
  • redis_client (Optional[Redis]) – Redis对象

  • key (str) – 锁名

  • renew_interval (int) – 刷新有效时间间隔,默认为5秒

  • expire_sec (int) – 有效时间,默认为10秒,需大于刷新间隔,否则刷新无效

  • raises (Optional[Exception]) – 获取锁失败时抛出的错误,仅使用with时有效

  • blocking_timeout (Optional[int]) – 获取锁的等待时间,默认为0,即不等待,为None时等待至获取到为止

提示

使用 with 获取锁时,如果获取失败,将直接报错。 使用 aquire 获取时,将返回 bool 类型,表示是否获取成功。

示例

with RedisLock('locked_key_a'):
    do_something()

lock = RedisLock('locked_key_b')
if lock.aquire():
    try:
        do_something()
    finally:
        lock.release()
Exclude-members

通过Redis实现的锁对象

Args:

redis_client: Redis对象 key: 锁名 renew_interval: 刷新有效时间间隔,默认为5秒 expire_sec: 有效时间,默认为10秒,需大于刷新间隔,否则刷新无效 raises: 获取锁失败时抛出的错误,仅使用with时有效 blocking_timeout: 获取锁的等待时间,默认为0,即不等待,为None时等待至获取到为止

Notes:

使用 with 获取锁时,如果获取失败,将直接报错。 使用 aquire 获取时,将返回 bool 类型,表示是否获取成功。

示例

with RedisLock('locked_key_a'):
    do_something()

lock = RedisLock('locked_key_b')
if lock.aquire():
    try:
        do_something()
    finally:
        lock.release()