A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://pypi.python.org/pypi/zc.lockfile below:

zc.lockfile · PyPI

The zc.lockfile package provides a basic portable implementation of interprocess locks using lock files. The purpose if not specifically to lock files, but to simply provide locks with an implementation based on file-locking primitives. Of course, these locks could be used to mediate access to other files. For example, the ZODB file storage implementation uses file locks to mediate access to file-storage database files. The database files and lock file files are separate files.

Contents

Detailed Documentation Lock file support

The ZODB lock_file module provides support for creating file system locks. These are locks that are implemented with lock files and OS-provided locking facilities. To create a lock, instantiate a LockFile object with a file name:

>>> import zc.lockfile
>>> lock = zc.lockfile.LockFile('lock')

If we try to lock the same name, we’ll get a lock error:

>>> import zope.testing.loggingsupport
>>> handler = zope.testing.loggingsupport.InstalledHandler('zc.lockfile')
>>> try:
...     zc.lockfile.LockFile('lock')
... except zc.lockfile.LockError:
...     print("Can't lock file")
Can't lock file

To release the lock, use it’s close method:

>>> lock.close()

The lock file is not removed. It is left behind:

>>> import os
>>> os.path.exists('lock')
True

Of course, now that we’ve released the lock, we can create it again:

>>> lock = zc.lockfile.LockFile('lock')
>>> lock.close()
Hostname in lock file

In a container environment (e.g. Docker), the PID is typically always identical even if multiple containers are running under the same operating system instance.

Clearly, inspecting lock files doesn’t then help much in debugging. To identify the container which created the lock file, we need information about the container in the lock file. Since Docker uses the container identifier or name as the hostname, this information can be stored in the lock file in addition to or instead of the PID.

Use the content_template keyword argument to LockFile to specify a custom lock file content format:

>>> lock = zc.lockfile.LockFile('lock', content_template='{pid};{hostname}')
>>> lock.close()

If you now inspected the lock file, you would see e.g.:

$ cat lock

123;myhostname

Change History 3.0.post1 (2023-02-28) 3.0 (2023-02-23) 2.0 (2019-08-08) 1.4 (2018-11-12) 1.3.0 (2018-04-23) 1.2.1 (2016-06-19) 1.2.0 (2016-06-09) 1.1.0 (2013-02-12) 1.0.2 (2012-12-02) 1.0.1 (2012-11-30) 1.0.0 (2008-10-18) 1.0.0b1 (2007-07-18)

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4