python - 为什么 Twisted 的 DeferredFilesystemLocks 对于并发使用不安全?

标签 python twisted filelock

Twisted API for DeferredFilesystemLock ,说明 deferUntilLocked 并发使用不安全。

我想了解它在哪些方面不安全以及是什么导致它不安全,以确保我不会滥用文件锁。

最佳答案

可以说,该方法对于并发使用来说实际上是相当安全的。如果您阅读the first four lines of the implementation那么很明显,尝试并发使用将立即引发 AlreadyTryingToLockError

也许警告是为了告诉您,您将得到一个异常,而不是有用的锁定行为。

该异常的实现应该提供关于为什么不允许并发使用的提示。 DeferredFilesystemLock 使用一些实例属性(以 _tryLockCall 开头)来跟踪尝试获取锁的进度。如果允许并发尝试,他们将互相践踏对此属性(和其他属性)的使用。

这可以相对轻松地得到增强。所需要做的就是在每次尝试分配的新对象上(而不是在 DeferredFilesystemLock 实例上)保留与锁定尝试关联的状态。 Or, DeferredLock could help.

关于python - 为什么 Twisted 的 DeferredFilesystemLocks 对于并发使用不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19018819/

相关文章:

java - 使用 FileChannel 编写任何 InputStream?

python - 使用 python 3 抓取 Json

python - 时间窗口崩溃的容量限制车辆路径问题

python - 检测并处理通过 Python 中的 os.system 调用生成的 LaTeX 警告/错误

python - 扭曲:正确捕获键盘中断和关闭

python - 通过 Nose 运行扭曲的单元测试?

python - 扭曲的延迟/回调和异步执行

python - 在子类对话框窗口中使用方法影响主窗口时出现问题

java - 在 Java 中,访问 RandomAccessFile 时从 FileChannel 获取 FileLock 的有保证的方法是什么?

java - 读取外部日志文件而不创建文件锁