API¶
A platform independent file lock that supports the with-statement.
- filelock.__version__¶
version of the project as a string
- filelock.FileLock¶
alias of
UnixFileLock
- class filelock.SoftFileLock(lock_file, timeout=- 1)¶
Bases:
BaseFileLockSimply watches the existence of the lock file.
- exception filelock.Timeout(lock_file)¶
Bases:
TimeoutErrorRaised when the lock could not be acquired in timeout seconds.
- lock_file¶
The path of the file lock.
- class filelock.UnixFileLock(lock_file, timeout=- 1)¶
Bases:
BaseFileLockUses the
fcntl.flock()to hard lock the lock file on unix systems.
- class filelock.WindowsFileLock(lock_file, timeout=- 1)¶
Bases:
BaseFileLockUses the
msvcrt.locking()function to hard lock the lock file on windows systems.
- class filelock.BaseFileLock(lock_file, timeout=- 1)¶
Bases:
ABC,ContextDecoratorAbstract base class for a file lock object.
- property is_locked¶
- Return type
- Returns
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.
- acquire(timeout=None, poll_interval=0.05, *, poll_intervall=None, blocking=True)¶
Try to acquire the file lock.
- Parameters
timeout – maximum wait time for acquiring the lock,
Nonemeans use the defaulttimeoutis and iftimeout < 0, there is no timeout and this method will block until the lock could be acquiredpoll_interval – interval of trying to acquire the lock file
poll_intervall – deprecated, kept for backwards compatibility, use
poll_intervalinsteadblocking – 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.
- Raises
Timeout – if fails to acquire lock within the timeout period
- Returns
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.
- release(force=False)¶
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.