[Python-Dev] best place for an atomic file API (original) (raw)

"Martin v. Löwis" martin at v.loewis.de
Thu Feb 16 10:08:30 CET 2012


(MvL complained in the tracker issue about a lack of concrete use cases, but I think fixing race conditions when overwriting bytecode files in importlib and the existing distutils/packaging use cases cover that)

I certainly agree that there are applications of "atomic replace", and that the os module should expose the relevant platform APIs where available.

I'm not so sure that "atomic writes" is a useful concept. I haven't seen a proposed implementation, yet, but I'm doubtful that truly ACID writes are possible unless the operating system supports transactions (which only Windows 7 does). Even if you are ignoring Isolation, Atomic already is a challenge: if you first write to a tempfile, then rename it, you may end up with a state tempfile (e.g. if the process is killed), and no rollback operation.

So "atomic write" to me promises something that it likely can't deliver. OTOH, I still think that the promise isn't actually asked for in practice (not even when overwriting bytecode files)

Regards, Martin



More information about the Python-Dev mailing list