ossfs 基于oss sdk 实现了与oss fs类似的能了,但是默认是有cache 的,尤其我们的long running 任务可能会影响,造成获取的数据是不是最新的,解决方法就是直接禁用cache
参考处理
# 通过临时调整cache有效期解决
from ossfs import OSSFileSystem
fs = ossfs.OSSFileSystem(listings_expiry_time=10,cache_type="none",key=self.oss_config.get("access_key"), secret=self.oss_config.get(
"secret_key"), endpoint=self.oss_config.get("endpoint"))
说明
可以解决实际进行cache 的处理,同时ossfs 也支持对于特定方法进行cache 控制,如下
super_kwargs = {
k: kwargs.pop(k)
for k in ["use_listings_cache", "listings_expiry_time", "max_paths"]
if k in kwargs
} # passed to fsspec superclass
super().__init__(**super_kwargs)
注意use_listings_cache 参数是没用的,直接配置为False 为有异常,最好的方法是配置listings_expiry_time 参数为一个比较小的就可以了
参考资料
https://github.com/fsspec/ossfs
https://github.com/fsspec/s3fs