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: 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: BaseFileLock

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

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

Bases: BaseFileLock

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

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

Bases: ABC, ContextDecorator

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, in seconds

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_interval=0.05, *, poll_intervall=None, blocking=True)#

Try to acquire the file lock.

Parameters:
  • timeout (typing.Optional[float]) – 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_interval (float) – interval of trying to acquire the lock file

  • poll_intervall (typing.Optional[float]) – deprecated, kept for backwards compatibility, use poll_interval instead

  • blocking (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.

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.