python - GetFileAttributesExA 能否返回 SMB3 挂载的陈旧信息?
问题描述
我试图找出一个单线程 Python 程序中问题的根本原因,该程序基本上是这样的(高度简化):
# Before running
os.remove(path)
# While running
if os.path.isfile(path):
with open(path) as fd:
...
我基本上看到了不稳定的行为,当文件不存在时isfile
(它使用stat
,它本身GetFileAttributesExA
在 Python 2.7 的引擎盖下使用,请参见此处)可以返回,下一次调用失败。True
open
path
在 SMB3 网络共享上,我怀疑某种缓存行为。是否有可能GetFileAttributesExA
返回过时的信息?
将 SMB 客户端缓存从默认(10s)减少到 0s 似乎使问题消失了:
Set-SmbClientConfiguration -DirectoryCacheLifetime 0 -FileInfoCacheLifetime 0
(注意:这里的正确解决方法是try
打开文件并捕获异常,当然,但我对这个问题感到困惑,想了解根本原因。)
解决方案
推荐阅读
- javascript - 如何使用 React360 使用 VRbutton 运行两个功能?
- react-native - 我可以在导出功能中使用 this.props.navigation.state.params 吗?
- javascript - 如何将对象数组作为 redux API 请求传递?
- python - 如何修复 pyspark 中的 takeUpToNumLeft StopIteration?
- tensorflow - 来自正态分布和柯西分布的独立分布
- python - 如何解决“找不到与平台无关的库”
" 在 Python 和 buildozer 中 - ios - 如何根据背景颜色将图像附加到数组中?
- python - Pandas DataFrame 因 AttributeError 失败:“NoneType”对象没有属性“键”
- server - 如何在共享服务器中安装 libsodium 1.0.18
- jquery - 填充一个对象并通过 jquery ajax 发布它