2009-11-05 18 views
5

¿Hay alguna manera de escribir y leer archivos en un sistema de archivos remoto (como NFS, SSHFS o sambafs) de forma que se lea o escriba o incluso se abra devolver inmediatamente con ¿código de error? De hecho estoy usando Twisted y quiero saber si hay una forma segura de acceder a los archivos remotos sin bloquear mi reactor.Cómo bloqueo de lectura/escritura a través del sistema de archivos remoto

Respuesta

7

En Twisted, para sistemas de ficheros remotos al igual que para cualquier otro llamadas de bloqueo, se puede utilizar threads.deferToThread - una forma razonablemente elegante para hacer frente a llamadas al sistema de bloqueo molestos -)

1

Esto es realmente muy similar a mi pregunta here. Parece que la única forma de evitar las limitaciones del sistema operativo, en este momento, es usar hilos o procesos externos para manejar su archivo IO por usted.

En una vida anterior (no python o retorcida, pero muy asincrónica), terminamos abstrayendo el archivo IO en un daemon separado que era esencialmente nuestro "trabajador del sistema de archivos".

Las versiones 2.6.x de Linux parecen haber agregado más soporte para IO asíncrono a nivel de núcleo, con libaio siendo el soporte para ello, pero parece bastante arcano y bastante dudoso en lo que realmente admite.

+0

Desafortunadamente AIO no está en tan buena forma: http://stackoverflow.com/questions/87892/what-is-the-status-of-posix-asynchronous-io-aio (El primer enlace en la pregunta es de particular interés) –

Cuestiones relacionadas