跳转到主要内容

POSIX和Windows的超时NFS安全的文件锁定

项目描述

NFS安全的文件锁定,带超时,适用于POSIX和Windows。

flufl.lock库提供了一个基于文件的锁定算法,该算法受到GNU/Linux open(2) manpage的启发,在描述O_EXCL选项的部分。

[…] 在NFS文件系统上,O_EXCL是损坏的,依赖它的程序将包含竞争条件。执行原子文件锁定使用锁文件的解决方案是在同一fs上创建一个唯一的文件(例如,包含主机名和pid),使用link(2)创建一个指向锁文件的链接。如果link()返回0,则锁定成功。否则,使用stat(2)在唯一文件上检查其链接数是否增加到2,如果是这样,则锁定也成功。

这里假设没有外部干扰,例如,没有在此代码之外执行link()的代理将链接到特定的锁文件。

锁定对象支持解锁功能,防止进程永久卡住。这在网络环境中尤其有用,但可能不适合所有应用程序。

锁有一个生命周期,这是进程期望保持锁的最大时间长度。在这里选择一个合适的数字很重要,因为其他进程将在预期生命周期到期之前不会破坏现有的锁。时间过长会导致其他进程挂起;时间过短则可能导致你踩在现有进程锁上——并可能损坏数据。在分布式(NFS)环境中,你还需要确保你的时钟正确同步。

作者

flufl.lock 版权所有 (C) 2007-2024 巴里·华沙 <barry@python.org>

根据Apache许可证第2.0版许可。有关详细信息,请参阅LICENSE文件。

项目详情

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪一个,请了解更多关于 安装软件包 的信息。

源分布

flufl_lock-8.1.0.tar.gz (32.9 kB 查看哈希值)

上传时间:

构建分布

flufl_lock-8.1.0-py3-none-any.whl (11.1 kB 查看哈希值)

上传时间: Python 3

由以下支持