DistributedLock¶
Helper for distributed locking using the configured backend.
分布式锁
基于缓存后端的分布式锁实现,支持超时和自动释放。
使用示例: >>> lock = DistributedLock(manager, "resource:123", timeout=10) >>> if lock.acquire(): ... try: ... # 处理资源 ... pass ... finally: ... lock.release()
Source code in src/symphra_cache/locks.py
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | |
__enter__()
¶
上下文管理器:进入
Source code in src/symphra_cache/locks.py
113 114 115 116 | |
__exit__(exc_type, exc_val, exc_tb)
¶
上下文管理器:退出
Source code in src/symphra_cache/locks.py
118 119 120 | |
__init__(manager, name, timeout=10, blocking=True, blocking_timeout=None)
¶
初始化分布式锁
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
manager
|
CacheManager
|
缓存管理器 |
required |
name
|
str
|
锁名称 |
required |
timeout
|
int
|
锁超时时间(秒) |
10
|
blocking
|
bool
|
是否阻塞等待 |
True
|
blocking_timeout
|
float | None
|
阻塞超时(秒) |
None
|
Source code in src/symphra_cache/locks.py
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | |
acquire()
¶
获取锁
Returns:
| Type | Description |
|---|---|
bool
|
是否成功获取锁 |
Source code in src/symphra_cache/locks.py
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | |
release()
¶
释放锁
Source code in src/symphra_cache/locks.py
102 103 104 105 106 107 108 109 110 111 | |