Welcome to portalocker’s documentation!¶
portalocker - Cross-platform locking library¶
Portalocker is a library to provide an easy API to file locking.
An important detail to note is that on Linux and Unix systems the locks are advisory by default. By specifying the -o mand option to the mount command it is possible to enable mandatory file locking on Linux. This is generally not recommended however. For more information about the subject:
The module is currently maintained by Rick van Hattem <Wolph@wol.ph>. The project resides at https://github.com/WoLpH/portalocker . Bugs and feature requests can be submitted there. Patches are also very welcome.
To make sure your cache generation scripts don’t race, use the Lock class:
>>> import portalocker >>> with portalocker.Lock('somefile', timeout=1) as fh: print >>fh, 'writing some stuff to my cache...'
To customize the opening and locking a manual approach is also possible:
>>> import portalocker >>> file = open('somefile', 'r+') >>> portalocker.lock(file, portalocker.LOCK_EX) >>> file.seek(12) >>> file.write('foo') >>> file.close()
There is no explicit need to unlock the file as it is automatically unlocked after file.close(). If you still feel the need to manually unlock a file than you can do it like this:
Do note that your data might still be in a buffer so it is possible that your data is not available until you flush() or close().
More examples can be found in the tests.