A platform independent file lock that supports the with-statement.
version of the project as a string
Alias for the lock, which should be used for the current platform.
- class filelock.SoftFileLock(lock_file, timeout=-1, mode=420, thread_local=True, *, is_singleton=False)#
Simply watches the existence of the lock file.
- exception filelock.Timeout(lock_file)#
Raised when the lock could not be acquired in timeout seconds.
- property lock_file#
The path of the file lock.
- class filelock.UnixFileLock(lock_file, timeout=-1, mode=420, thread_local=True, *, is_singleton=False)#
fcntl.flock()to hard lock the lock file on unix systems.
- class filelock.WindowsFileLock(lock_file, timeout=-1, mode=420, thread_local=True, *, is_singleton=False)#
msvcrt.locking()function to hard lock the lock file on Windows systems.
- class filelock.BaseFileLock(lock_file, timeout=-1, mode=420, thread_local=True, *, is_singleton=False)#
Abstract base class for a file lock object.
- property is_singleton#
a flag indicating if this lock is singleton or not
- property lock_file#
path to the lock file
- property timeout#
the default timeout value, in seconds
New in version 2.0.0.
- property is_locked#
A boolean indicating if the lock file is holding the lock currently.
Changed in version 2.0.0: This was previously a method and is now a property.
- property lock_counter#
The number of times this lock has been acquired (but not yet released).
- acquire(timeout=None, poll_interval=0.05, *, poll_intervall=None, blocking=True)#
Try to acquire the file lock.
float]) – maximum wait time for acquiring the lock,
Nonemeans use the default
timeoutis and if
timeout < 0, there is no timeout and this method will block until the lock could be acquired
float) – interval of trying to acquire the lock file
bool) – defaults to True. If False, function will return immediately if it cannot obtain a lock on the first attempt. Otherwise, this method will block until the timeout expires or the lock is acquired.
Timeout – if fails to acquire lock within the timeout period
- Return type:
a context object that will unlock the file when the context is exited
# You can use this method in the context manager (recommended) with lock.acquire(): pass # Or use an equivalent try-finally construct: lock.acquire() try: pass finally: lock.release()
Changed in version 2.0.0: This method returns now a proxy object instead of self, so that it can be used in a with statement without side effects.
Releases the file lock. Please note, that the lock is only completely released, if the lock counter is 0. Also note, that the lock file itself is not automatically deleted.