Python如何快速测试NAS驱动器的可用性?

时间:2017-08-18 19:55:54

标签: python exception-handling timing nas

对于洪水预警系统,我的Raspberry Pi近乎实时地响铃,但使用NAS驱动器作为邮箱将数据文件输出到PC以进行较慢时间的图形和报告,并接收各种输入数据文件回来了。 Pi上的Python需要10秒才能确定其旁边的NAS驱动器当前不可用。我需要在不到一秒的时间内为每次访问尝试发生这种情况,否则延迟会加起来并且Pi无法及时刷新硬件监视器。 (Pi以固定周期执行任务:每秒,每15秒(看门狗),每75秒和每10分钟。)所有光盘访问尝试之前都是try-except测试。但是try-except没有帮助,因为像os.path.exists()或者open()这样的测试在引发异常之前都需要10秒,即使NAS驱动器断电也是如此。就好像在通信协议中有10秒的超时时间而不是在软件中。

有没有办法告诉尝试 - 除非不那么耐心?如果没有,我怎样才能更准确地指出NAS驱动器是否会在下一次读/写时保持Pi,以便Pi可以放弃并等到下一个周期?我已经为此完成了所有文件排队,但如果每次检查都需要10秒钟,那就浪费了。

1 个答案:

答案 0 :(得分:0)

在这个阶段接受MQTT将是这个近乎完成的项目的一个重大变化。但是你的建议是通过使用第二个脚本将近实时Python与NAS驱动器分离,我想是要走的路。如果Python光盘接口命令等待10秒钟才能得到答案,我无法提供帮助。但是我可以通过将所有时间关键文件访问保留在Pi内存中本地,并在Pi和NAS驱动器发生变化时在两个方向上复制整个文件来阻止时间关键的Python函数。事实上,我已经在Python中拥有了机会主义的复制器代码 - 我只需要将它从主时间关键脚本中移出到一个单独的脚本中来复制文件。复制器Python脚本将等待任何时间,而不是时间关键的Python脚本。 Pi调度程序将为我解耦这两个脚本。谢谢你的帮助 - 我开始绝望了!