2009-11-05 6 views
5

Gibt es eine Möglichkeit zum Schreiben und Lesen von Dateien auf einem Remote-Dateisystem (wie NFS, SSHFS oder Sambafs) in einer Weise, lesen oder schreiben oder sogar sofort mit einem öffnen Fehlercode? Tatsächlich verwende ich Twisted und ich möchte wissen, ob es eine sichere Möglichkeit gibt, auf entfernte Dateien zuzugreifen, ohne meinen Reaktor zu blockieren.Wie non-blocking lesen/schreiben durch Remote-Dateisystem

Antwort

7

In Verdreht, für Remote-Dateisysteme wie für alle anderen Anrufe blockiert, Sie threads.deferToThread verwenden - eine recht elegante Art und Weise zu behandeln nervtötende Blockierung syscalls! -)

1

Diese auf meine Frage eigentlich sehr ähnlich ist gefragt here. Es scheint, dass der einzige Weg, um die Einschränkungen des Betriebssystems zu umgehen, derzeit ist, Threads oder externe Prozesse zu verwenden, um Ihre Datei IO für Sie zu behandeln.

In einem früheren Leben (nicht python oder verdreht, aber sehr asynchron), haben wir am Ende Datei IO in einen separaten Daemon abstrahiert, der im Wesentlichen unser 'Dateisystem-Arbeiter' war.

2.6.x Versionen von Linux scheinen mehr Unterstützung für asynchrones IO auf der Kernel-Ebene hinzugefügt zu haben, wobei libaio die Unterstützung dafür ist, aber es sieht ziemlich geheimnisvoll aus und ist ziemlich zweifelhaft in dem, was es tatsächlich unterstützt.

+0

Leider AIO ist nicht in einer so guten Form: http://StackOverflow.com/Questions/87892/what-is-the-status-of-posix-asynchronous-io-aio (Der erste Link in der Frage ist von besonderem Interesse) –