API

A platform independent file lock that supports the with-statement.

filelock.__version__

version of the project as a string

filelock.FileLock

alias of filelock._unix.UnixFileLock

class filelock.SoftFileLock(lock_file, timeout=- 1)

Bases: filelock._api.BaseFileLock

Simply watches the existence of the lock file.

exception filelock.Timeout(lock_file)

Bases: TimeoutError

Raised 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: filelock._api.BaseFileLock

Uses the fcntl.flock() to hard lock the lock file on unix systems.

class filelock.WindowsFileLock(lock_file, timeout=- 1)

Bases: filelock._api.BaseFileLock, abc.ABC

Uses the msvcrt.locking() function to hard lock the lock file on windows systems.

class filelock.BaseFileLock(lock_file, timeout=- 1)

Bases: abc.ABC

Abstract base class for a file lock object.

property lock_file
Return type

str

Returns

path to the lock file

property timeout
Return type

float

Returns

the default timeout value

New in version 2.0.0.

property is_locked
Return type

bool

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_intervall=0.05)

Try to acquire the file lock.

Parameters
  • timeout (typing.Optional[float, None]) – maximum wait time for acquiring the lock, None means use the default timeout is and if timeout < 0, there is no timeout and this method will block until the lock could be acquired

  • poll_intervall (float) – interval of trying to acquire the lock file

Raises

Timeout – if fails to acquire lock within the timeout period

Return type

filelock._api.AcquireReturnProxy

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.

Parameters

force (bool) – If true, the lock counter is ignored and the lock is released in every case/

Return type

None

class filelock.AcquireReturnProxy(lock)

Bases: object

A context aware object that will release the lock file when exiting.