使用python缓存远程文件

时间:2015-07-08 11:17:36

标签: python caching

背景

我们有很多数据文件存储在我们在python中处理的网络驱动器上。出于性能原因,我通常在处理时将文件复制到本地SSD。我希望自动实现这一点,所以每当我尝试打开文件时,如果它没有存储在本地,它将获取远程版本,理想情况下还会保留某种计时器以在一段时间后删除文件。这些文件几乎不会被更改,因此我不需要实际的同步功能。

功能

总结我正在寻找的功能是:

  • 从网络驱动器保留文件/目录的本地缓存,在本地不可用时自动检索远程版本
  • 支持目录结构 - 也就是说,文件存储在远程服务器上的目录结构中,应该在本地为所请求的文件复制
  • 理想情况下保留某种计时器以使缓存文件失效

对我来说,编写一段能够实现这一目标的代码并不困难,但是在可能的情况下,我更愿意依赖现有的项目,因为这通常会产生更多样化的最终结果,并使我的任何一个其他用户可以轻松获得自己的改进。

问题

我已经搜索了python本地文件缓存,文件同步等术语,但我发现的主要是处理函数返回值的缓存。我有点惊讶,因为我认为这是一个相当普遍的问题,因此我的问题是:是否有一些我忽略的东西,更重要的是,是否有任何描述此功能的技术术语可以帮助我进行研究。

提前谢谢你, 格雷格斯波尔森

- 更新 -

由于其他专有软件包,我不得不使用Windows,所以解决方案自然必须支持这一点。

1 个答案:

答案 0 :(得分:0)

使用a tutorial on the anaconda blogthe official documentation看一下fsspec远程缓存。引用前者:

在本文中,我们将展示[fsspec]缓存远程内容的新功能,在首次读取后保留本地副本以便更快地查找。

他们举了一个使用方法的例子:

import fsspec
of = fsspec.open("filecache://anaconda-public-datasets/iris/iris.csv", mode='rt', 
                 cache_storage='/tmp/cache1',
                 target_protocol='s3', target_options={'anon': True})
with of as f:
    print(f.readline())

在第一次调用时,文件将被下载,存储到缓存中并提供。在第二次调用时,将从本地文件系统下载该文件。

我还没有使用过,但是我需要它,并且看起来很有希望。