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

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

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

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

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

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

blocking_timeout 指定尝试获取锁的最大等待时间(秒)。

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

extend(additional_time, replace_ttl=False)[source]

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

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

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

locked()[source]

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

owned()[源代码]

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

reacquire()[源代码]

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

release()[源代码]

释放已获取的锁