[Python-Dev] Ext4 data loss
Antoine Pitrou
solipsis at pitrou.net
Thu Mar 12 03:03:13 CET 2009
Nick Coghlan <ncoghlan <at> gmail.com> writes:
>
> The tempfile module would be another example.
Do you really need your temporary files to survive system crashes? ;)
> For that reason, I think Steven's idea of a filetools module which
> provided context managers and the like that wrapped *existing* file-like
> objects might be preferable.
Well, well, let's clarify things a bit.
If we want to help users with this problem, we can provide two things:
1. a new sync() method on the standard objects provided by the IO lib
2. a facility to automatically call sync() on flush() and/or close() calls
Step 1 may be done with a generic implementation in the IO ABCs calling
self.flush() and then os.fsync(self.fileno()). IMO it is important that it is a
method of IO objects because implementations may want to override it. An
external facility would be too inflexible.
Step 2 may be done with a generic wrapper. However, we could also provide an
open() flag which transparently invokes the wrapper. After all, open() is
already a convenience function creating a raw file object and wrapping it in two
optional layers.
(as a side note, wrappers have a non-zero performance impact, especially on
small ops - e.g. reading or writing a few bytes)
More information about the Python-Dev
mailing list