#

class redis.lock.Lock(redis, name, timeout=None, sleep=0.1, blocking=True, blocking_timeout=None, thread_local=True)[source]#

一个共享的、分布式的锁。使用 Redis 进行锁定允许锁在进程和/或机器之间共享。

解决死锁问题并确保多个客户端能够正常协作是用户的责任。

参数
  • name (str) –

  • timeout (Union[int, float, None], default: None) –

  • sleep (Union[int, float], default: 0.1) –

  • blocking (bool, default: True) –

  • blocking_timeout (Union[int, float, None], default: None) –

  • thread_local (bool, 默认值: True) –

acquire(sleep=None, blocking=None, blocking_timeout=None, token=None)[source]#

使用 Redis 持有一个名为 name 的共享分布式锁。获取锁后返回 True。

如果 blocking 为 False,则始终立即返回。如果获取了锁,则返回 True,否则返回 False。

blocking_timeout 指定尝试获取锁的最大等待秒数。

token 指定要使用的令牌值。如果提供,令牌必须是字节对象或可以使用默认编码编码为字节对象的字符串。如果未指定令牌,则会生成 UUID。

参数
  • sleep (Union[int, float, None], 默认值: None) –

  • blocking (Optional[bool], 默认值: None) –

  • blocking_timeout (Union[int, float, None], default: None) –

  • token (Optional[str], 默认值: None) –

extend(additional_time, replace_ttl=False)[source]#

为已获取的锁添加更多时间。

additional_time 可以指定为整数或浮点数,两者都表示要添加的秒数。

replace_ttl 如果为 False(默认值),则将 additional_time 添加到锁的现有 ttl。如果为 True,则用 additional_time 替换锁的 ttl。

参数
  • additional_time (int) –

  • replace_ttl (bool, 默认值: False) –

返回类型

bool

locked()[source]#

如果此键被任何进程锁定,则返回 True,否则返回 False。

返回类型

bool

owned()[source]#

如果此键被此锁锁定,则返回 True,否则返回 False。

返回类型

bool

reacquire()[source]#

将已获取锁的 TTL 重置为超时值。

返回类型

bool

release()[source]#

释放已获取的锁。

返回类型