一个简单的基于XML-RPC的锁守护进程,支持隔离。
项目描述
使用lockd API
lockd通过在指定目录中维护锁文件,提供了一个轻量级的锁定机制,以支持长时间运行的资源。
>>> import tempfile >>> lockdir = tempfile.mkdtemp() >>> from gocept.lockd.lockd import Lockd >>> daemon = Lockd(lockdir)
资源通过字符串标识,执行锁定的客户端也通过另一个字符串标识
>>> daemon.lock('resource1', 'client1')
一旦资源被锁定,就无法再次锁定
>>> daemon.lock('resource1', 'client2') Traceback (most recent call last): Exception: Resource already locked by 'client1'
然而,可以并行锁定其他资源
>>> daemon.lock('resource2', 'client2')
除了锁定资源的客户端之外,其他客户端不能解锁它
>>> daemon.unlock('resource1', 'client2') Traceback (most recent call last): Exception: Resource locked by 'client1' cannot be unlocked by 'client2'
锁定资源的客户端可以再次解锁
>>> daemon.unlock('resource1', 'client1')
一旦解锁,就不能再次解锁
>>> daemon.unlock('resource1', 'client1') Traceback (most recent call last): Exception: Resource not locked
重要安全提示
资源标识和客户端授权不在lockd的范围内。它只应在受信任的环境中使用和公开。
清理
>>> import shutil >>> shutil.rmtree(lockdir)
项目详情
关闭
gocept.lockd-0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7d37670134ddede6a09ea4694e8d1dce42b0d0c9b4fc39f370bf84560af3e1d |
|
MD5 | dd0cd2c54952d01916ce65275a7eaefb |
|
BLAKE2b-256 | 948a8f2c13b34bfa1b461b46c6f1bf988eb72ce9100ad98fc84cd02b6cd4f66c |