C'è un modo per scrivere e leggere file su un filesystem remoto (come NFS, SSHFS o sambafs) in un modo che legge o scrive o addirittura apre restituisce immediatamente con un codice di errore? Infatti sto usando Twisted e voglio sapere se esiste un modo sicuro per accedere ai file remoti senza bloccare il mio reattore.Come non bloccare la lettura/scrittura tramite Remote FileSystem
risposta
In Contorto, per i file system remoti, proprio come per le altre chiamate di blocco, è possibile utilizzare threads.deferToThread - un modo ragionevolmente elegante per trattare con chiamate di sistema di bloccaggio fastidiosi -!)
Questo è in realtà molto simile alla mia domanda fatta here. Sembra che l'unico modo per aggirare le limitazioni del sistema operativo, al momento, sia usare thread o processi esterni per gestire il tuo file IO per te.
In una vita precedente (non python o twistata, ma molto asincrona), abbiamo finito per astrarre il file I/O in un demone separato che era essenzialmente il nostro 'file system worker'.
Le versioni 2.6.x di linux sembrano aver aggiunto più supporto per IO asincrono a livello di kernel, con libaio come supporto, ma sembra piuttosto arcano e piuttosto discutibile in ciò che effettivamente supporta.
Sfortunatamente AIO non è in una forma così buona: http://stackoverflow.com/questions/87892/questo-è-stato-di-pospositivo-asynchronous-io-aio (il primo link nella domanda è di particolare interesse) –