【问题标题】:Reader writer lock with preference to writersReader writer lock 优先于 writer
【发布时间】:2017-06-10 22:37:31
【问题描述】:

简单地说,我有两种类型的计算机:AB
A类型的电脑一台,B类型的电脑多台。

B 是可以从 ftp 写入和读取的主机类型。 A 是一台只能从 ftp 读取的计算机。

您可能已经猜到了,ftp 是共享区域,需要通过读写锁解决方案加以保护。

是否有人知道已经存在的python package 可以处理这种情况,如果没有,是否有人有示例如何实现这种需求?

我猜有些锁应该在 ftp 上实现为文件,因为我们正在处理来自不同主机的进程。

谢谢

【问题讨论】:

  • 一些程序使用像.lock这样的简单文件(有时会包含一些使用资源的信息)。如果文件不存在,那么您可以创建它并使用资源。
  • @furas:你知道已经存在的包或实现吗?

标签: python python-2.7 operating-system locks readerwriterlock


【解决方案1】:

作者:

  1. 上传文件 W。如果失败,请稍候再试。
  2. 上传文件 R。如果失败,请稍候再试。
  3. 根据需要执行尽可能多的写入操作。
  4. 移除 W.
  5. 删除 R.

读者:

  1. 上传文件 R。如果失败,请稍候再试。
  2. 检查文件 W 是否存在。如果存在,删除 R 并返回步骤 1。
  3. 读一读。如果需要多次读取,请返回第 2 步。
  4. 删除 R.

您可以使用 Python 模块 ftplib(或者对于 SFTP,paramiko)来实现上述操作。

【讨论】:

  • 我们需要限制对锁文件的访问,因为可能一个进程想要移除锁,而同时另一个进程也想要移除它。我们在这里需要一些线程/进程安全性,有什么想法可以实现它以避免使用 ftplib 或其他用于处理 ftp 的包的竞争条件?
  • @JavaSa:我不明白你的意思。我概述了获取和释放锁的完整序列。文件系统不允许两个不同的程序创建同一个文件。
猜你喜欢
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2018-08-10
  • 2020-05-17
相关资源
最近更新 更多