[Python] Come gestireste una funziona di rollback

Manlio Perillo manlio.perillo a gmail.com
Dom 12 Maggio 2013 16:47:04 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 11/05/2013 19:13, Gollum1 ha scritto:
> Mi spiego meglio, sto costruendo un applicativo che lavora con file e
> directory, in una struttura creata ad ok. vorrei fare in modo che se
> qualcosa nell'elaborazione andasse storto tutte le modifiche fatte a
> questa struttura venissero eliminate e si ritornasse alla situazione
> precedente.
> 

Nel caso generale (qualsiasi tipo di modifiche) e accesso concorrente, è
un problema molto complesso.  Magari trovi qualcosa cercando
"Transactional filesystem".

> in una precedente versione del progetto, che stavo realizzando in
> perl, avevo realizzato la funzione di rollback con un file di appoggio
> dove scrivevo tutte le modifiche fatte, con il vantaggio che se il
> programma si fosse bloccato, ad un successivo riavvio, trovando il
> file di rollback, come prima operazione ripristinava comunque il
> tutte...
>

Tieni conto che per operazioni semplice, esistono soluzioni più semplice
ed efficienti.  Ad esempio usando operazioni sul filesystem la cui
esecuzione è garantite essere atomica da POSIX.  Ad esempio rename,
(però attendo che su Windows non è atomica, oppure l'apertura di un file
in modalità esclusiva (sempre solo UNIX).

In altri casi puoi usare la semantica COW (Copy On Write) dei "nuovi"
filesystems più avanati, ad esempio copiando l'intera directory dove
lavori, facendo modifiche e solo in caso di successo rinominare la
vecchia directory in quella nuova (non testato, neppure in teoria).


> [...]


Ciao  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlGPq2cACgkQscQJ24LbaURN4gCeOOhfLcp0XGL12a760iJpxKOB
kTcAoIggq7DhLIUe2NkN6nDoYG0rUJ/5
=oR+R
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python