python os.path.exists() 对于存在的 nfs 挂载目录文件失败

2024-06-25

我基本上有一个用于网站的网络服务器和另一个仅存储文件的网络服务器。文件服务器通过安装其目录之一连接到主服务器。该网站运行 Django,所以我主要处理 python。不管怎样,我似乎遇到了一些问题,文件被报告为不存在,即使它们实际上存在。

基本上当我打电话时

filepath = '/path/to/file/on/nfs/share'
exists = os.path.exists(filepath)

exists即使该文件确实存在,也是 false,并且我知道它确实存在,因为我已将时间戳打印到日志文件中,该日志文件准确显示了它的创建时间。我不确定可能是什么问题,但我知道 os.path.exists 的文档说

在某些平台上,如果未授予对请求的文件执行 os.stat() 的权限,则此函数可能会返回 False,即使路径实际存在。

我知道情况并非如此,因为这些文件共享相同的组和组号,并且在两台服务器上也共享相同的组号。它可能是一个陈旧的缓存或类似的东西吗?

我的安装是通过 fstab 自动完成的。

Client side, the settings are:
filehost:/filefolder /localfolder nfs defaults,rsize=32768,wsize=32768

Server side, the settings are:
/filefolder webserver(rw,sync,no_root_squash,no_subtree_check)

Edit:

所以,我想了解更多信息/细节。我正在运行一个 Python 子进程,它在远程目录中生成一个文件。当发出请求时,它启动子进程并返回文件的预期位置。

在前端,有一个被 ping 的 url,它为该文件调用 os.path.exists() ,当它执行时,然后通过 ajax 加载资源。

怀疑的问题是,有时此 pinger 会报告文件在实际可用后几秒钟内不可用。这也是我认为可能是陈旧缓存存在问题的原因。

所有文件和其中的目录都是所有者/组 www-data,以及由 django 实例化的任何子进程。而且这个问题似乎并不完全可重复。有时它会很快起作用,而另一些则需要比预期多几秒钟的时间


这是由于 NFS 缓存造成的here http://web.archive.org/web/20100912144722/http://www.unixcoding.org/NFSCoding:

属性缓存缓存 struct stat 中的所有内容,因此 stat() 和 fstat() 调用可以从缓存返回。如果您需要查看文件的最新大小或运行时间(或其他字段),则需要在 stat() 调用之前刷新文件的属性缓存。

请注意,如果文件句柄已缓存,则 stat() 返回该缓存文件的信息(因此结果与 fstat() 相同)。如果需要 stat() 具有给定文件名的最新文件,请首先刷新文件句柄缓存。

我想这是stat失败原因是文件尚未在缓存中。 我在 NFS 手册页中找到了这一点:

ac / noac - Selects whether the client may cache file attributes. If neither option is specified (or if ac is specified), the client caches file attributes.

但那里也有一个警告,所以我只能忍受延迟:

使用 noac 选项可以在访问相同文件的 NFS 客户端之间提供更高的缓存一致性,但会带来显着的性能损失。因此,鼓励明智地使用文件锁定。数据和元数据一致性部分包含对这些权衡的详细讨论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python os.path.exists() 对于存在的 nfs 挂载目录文件失败 的相关文章

  • 如何将 typeshed 与 mypy 一起使用?

    我克隆了typeshed https github com python typeshed但我不知道如何告诉 mypy 使用它包含的类型提示 我在 mypy help 中没有看到任何选项 mypy 存储库确实包含对 typeshed 存储库
  • Python:访问另一个类中一个类的属性和方法

    假设我有两个 A 类和 B 类 Class A A s attributes and methods here Class B B s attributes and methods here 现在我可以评估 B 类对象中 A 的属性 如下所
  • 在 PyCharm 中启用终端模拟

    很多人告诉过我和PyCharm 2 7 的 PyCharm 发行说明 https www jetbrains com pycharm whatsnew whatsnew 27 html吹捧那个PyCharm包括完整的终端仿真 我认为这是关于
  • Django表单中的隐藏字段不在cleaned_data中

    我有这个表格 class CollaboratorForm forms Form user forms CharField label Username max length 100 canvas forms IntegerField wi
  • 如何在 dash/plotly 中使用 iframe? (Python/HTML)

    我正在创建一个仪表板 我想使用这个交互式地图 网站链接 https www ons gov uk peoplepopulationandcommunity healthandsocialcare causesofdeath articles
  • 使用 pytherejs 嵌入小部件:错误的视角和相机观察

    我在用pythreejs可视化一些 3D 模型 在 Jupyter 笔记本上可视化模型时 一切都按预期进行 但是当尝试将小部件嵌入 HTML 文档时 我面临两个问题 看起来相机在加载时正在查看 0 0 0 而不是预期的那样 一旦您与小部件交
  • os.walk 无需深入研究下面的目录

    我该如何限制os walk只返回我提供的目录中的文件 def dir list self dir name whitelist outputList for root dirs files in os walk dir name for f
  • Plotly:如何在堆叠条形图顶部显示值的总和以及各个条形值?

    我正在尝试在 Python 中的 Plotly Express 中添加每个堆叠条形顶部的总计以及各个条形值 import plotly express as px df px data medals long fig px bar df x
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • 如何向 Jupyter (ipython) 笔记本自动添加扩展?

    我已经安装了扩展 calico document tools 我可以使用以下命令从 Jupyter 笔记本中加载它 javascript IPython load extensions calico document tools 如何为每个
  • 在Python中将月份和年份的列合并为季度和年份的列

    我有一个数据框 df Month 1 8 Year 2015 2020 df pd DataFrame data df df 想要将其转变为新列 期望的输出 df Month 1 8 Year 2015 2020 Quarter Q1201
  • 使用 SQLAlchemy 查询 Pandas DataFrame 时重命名列

    当您将数据查询到 pandas 数据帧时 有没有办法保留 SqlAlchemy 属性名称 这是我的数据库的简单映射 对于 school 表 我将数据库名称 SchoolDistrict 重命名为较短的 district 我从 DBA 中删除
  • 识别文本中的多个类别和相关情感

    如果您有一个文本语料库 如何识别所有类别 来自预定义类别列表 以及与之相关的情绪 正面 负面写作 我将在 Python 中执行此操作 但现阶段我不一定要寻找特定于语言的解决方案 让我们用一个例子来看看这个问题 试图澄清我的问题 如果我有一整
  • 如何忽略 Sentry 捕获中的某些 Python 错误

    我已将 Sentry 配置为捕获 Django Celery 应用程序中的所有错误 它工作正常 但我发现一个令人讨厌的用例是当我必须重新启动我的 Celery 工作人员 PostgreSQL 数据库或消息服务器时 这会导致数千种各种 无法访
  • numpy.polyval() 的反函数

    我想知道 np polyval 是否有一个方便的反函数 我在其中给出 y 值并求解 x 我知道我可以做到这一点的一种方法是 import numpy as np Set up the question p np array 1 1 10 y
  • 抓取 Shopee API v4

    我有一个最终项目 其中我想要检索的数据是通过在shopee上抓取数据来获取的 但是当我在隐藏的API上抓取shopee时遇到问题 当我在Insomnia脚本上尝试时 脚本会运行 但是当我尝试时在本地或 google colab 脚本上 这是
  • tkinter 库 treectrl 转换为 exe 安装程序时出现 cx_freeze 错误

    我使用的是 python 版本 3 7 我使用了这个名为 treectrl 的外部库 当我运行 py 文件时它工作得很好 但是当我使用 cx freeze 转换为 exe 文件时 它给了我错误 NomodulleFound 名为 tkint
  • Maya python 连接选择的属性

    我一直在尝试制作一个简单的脚本 它将采用两个视口选择 然后基本上将第二个视口的旋转连接到第一个 我不确定如何正确地从视口选择中为对象创建变量 这是我的尝试 但不起作用 import maya cmds as cmds sel cmds ls
  • VSCode IntelliSense 认为 Python 'function()' 类存在

    VSCode IntelliSense 正在完成一个名为的 Python 类function 这似乎不存在 例如 这似乎是有效的代码 def foo value return function value foo 0 But functio
  • 无法将 类型的对象转换为张量

    我正在编写一个使用 Flask 框架的客户端 python 文件 并在 docker 机器中运行它 因此 这需要一个输入文件并生成它的输出 但它会抛出无法转换为张量的错误 tf app flags DEFINE string server

随机推荐

  • 访问层次结构之外的顶级资源

    有没有一种方法可以在verilog中综合架构 以便深度嵌套的端点可以访问一些顶级引脚 来自 ucf 而无需通过层次结构的每个模块明确路由引脚 就我而言 我有一个带有深度嵌套端点的 PCIe 块 在端点处有一个地址解码器 需要从顶层引脚提供一
  • 调整FontSizeToFitWidth 与SizeToFit

    我在用着SizeToFit因为我不必指定Frame属性具有自适应大小UIButton UILabel 就我而言 它是工具栏上的一个按钮 现在我做了以下观察 如果我使用AdjustsFontSizeToFitWidth和 一起SizeToFi
  • 如何将 Excel Interop 与 ClosedXml 混合使用:样式

    我试图在 Excel VSTO 加载项中实现以下目标 从 Excel 文件的原始版本复制 应用单元格格式 原因 在处理 Excel 文件时 我们偶尔需要更改文件的样式 颜色 以便能够仅处理某些单元格 文件处理后 我们需要恢复原始的单元格格式
  • Android 复杂形状按钮

    你好安卓开发者 我的 UI 设计师想要一个复杂形状的按钮 但我不知道该怎么做 请帮助我 这就是她想要的设计image http img823 imageshack us img823 984 q43b png 有很多方法可以做到这一点 最简
  • 如何从hibernate会话获取jdbc连接? [复制]

    这个问题在这里已经有答案了 我想从hibernate会话获取jdbc连接 hibernate会话中有方法 即 session connection 但它已被弃用 我知道这仍然有效 但我不想使用已弃用的方法 因为我确信他们必须为此提供一些替代
  • 接口协方差问题

    以下代码示例 interface I
  • 设置删除标记时的缩放级别

    使用 javascript 谷歌地图 api 我目前已将其设置为删除制造商 当我添加像这样的位置时 我将其设置为 function addLocation map location var point new GLatLng locatio
  • 使用 PDO 扩展的execute(array())插入语句不起作用

    stmt conn gt prepare INSERT INTO user VALUES username md5 password 1 email 0 0 cover dateofbirthYear dateofbirthMonth da
  • 指向 lambda 的函数指针目标的生命周期是多少?

    抱歉 这是一个冗长的问题 但让我来分解一下 C 标准是否保证 void Ptr void return Ptr 仍将是定义的行为吗 我知道 对于闭包 它将被定义 因为该闭包对象是按值移动 复制的 但是 虽然我知道 常规 函数具有无限 无生命
  • 跨多个模块的 Python 日志记录

    我正在尝试将日志记录 到控制台而不是文件 添加到我已经工作了一段时间的代码中 阅读了一些内容后 我有一个我认为应该可行的模式 但我不太确定我哪里出错了 我有以下三个文件 显然是简化的 控制器 py import my module impo
  • 哪些工具向 Bugzilla 或 Mylyn 提供燃尽图? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我和我的团队需要使用 Mylyn 开发一个项目 该项目的错误已在 Bugzilla 中归档 您是否知道有
  • 有关 items_for_sale 随着时间的推移更新的数据库/架构设计问题

    我知道我的问题的明显答案是 这取决于 解决这个问题后 我希望你们中的一个 或多个 能够帮助我找到解决这个问题的常见方法 我正在设计一个待售小部件数据库 随着时间的推移 每件商品的价格将不可避免地发生变化 我的问题是我们是否应该跟踪这些变化
  • React - 防止标签切换时焦点脱离模式

    我自己构建了一个反应模式 当我在模式打开时按 Tab 键时 焦点仍然转到背景页面 如何将焦点限制在模态框内的组件内 下面的逻辑应该是什么 onKeyPress e if e keyCode 9 e preventDefault logic
  • AttributeError:使用 Flask 无模式登录时,模块“flask_login.login_manager”没有属性“user_loader”

    我有以下代码 我尝试使用 Flask 进行身份验证 from flask import Flask from flask login import LoginManager login manager from auth auth impo
  • Three.js:相机绕球体飞行?

    在 Three js 使用 JavaScript WebGL 中 如何创建一个以固定高度 固定前进速度和相对于球体的固定方向围绕球体飞行的相机 用户只能向左转向和正确的 想象一架飞机在一根看不见的绳子上飞向地球的中心 在地面附近飞行并且总是
  • UCanAccess:向现有表添加列

    我有一个正在运行的 Java 项目 它使用 Access accdb 数据库来存储数据 我正在对我的程序进行更新 以便为用户提供更多功能 为此 我需要向填充数据的现有表添加一列 当我研究时 我发现 UCanAccess 不支持 ALTER
  • ColdFusion 11 中的自动类型转换

    我正在将应用程序从 ColdFusion 9 迁移到 ColdFusion 11 在现有代码中 有一个变量分配给false
  • 如何为 WPF 工具包图表提供样式

    我在 WPF 应用程序中使用 WPF Toolkit Chart 和 PieChart 我想将饼图图片中的默认白色背景更改为透明 如何提供风格来实现这一目标 WPF 旨在允许您通过 XAML 设置控件样式 不是代码 还可以通过样式使饼图中的
  • 基准测试socket.io

    我想对我的 socket io 服务器进行基准测试 我想测试服务器可以处理多少并行连接和消息 但是当我用大约 200 个 websocket 启动基准测试几分钟后 我的 socket io 服务器崩溃了 我尝试使用node js的集群模块将
  • python os.path.exists() 对于存在的 nfs 挂载目录文件失败

    我基本上有一个用于网站的网络服务器和另一个仅存储文件的网络服务器 文件服务器通过安装其目录之一连接到主服务器 该网站运行 Django 所以我主要处理 python 不管怎样 我似乎遇到了一些问题 文件被报告为不存在 即使它们实际上存在 基