如何通过远程文件系统实现非阻塞读写

5 投票
2 回答
1991 浏览
提问于 2025-04-15 15:42

有没有办法在远程文件系统上(比如NFS、SSHFS或sambafs)进行文件的读写操作,让这些操作在遇到问题时能立刻返回错误代码,而不是一直等着?实际上,我正在使用Twisted框架,我想知道有没有一种安全的方式来访问远程文件,而不会阻塞我的反应器(reactor)。

2 个回答

1

这其实跟我之前在这里问的问题很像。现在看来,想要绕过操作系统的一些限制,唯一的方法就是使用线程或者外部进程来帮你处理文件输入输出。

在我之前的工作中(不是用python或twisted,但也是非常异步的),我们最终把文件输入输出抽象成一个单独的守护进程,基本上就是我们的“文件系统工作者”。

Linux的2.6.x版本似乎在内核层面增加了对异步输入输出的支持,libaio就是为了支持这个功能,但看起来它的用法相当复杂,而且具体支持哪些功能也有点不太明确。

7

在Twisted中,对于远程文件系统,就像处理其他会阻塞的调用一样,你可以使用 threads.deferToThread 这个方法。这是一种相对优雅的方式来处理那些让人头疼的阻塞系统调用!-)

撰写回答