python-zc.lockfile
Port variant v14
Summary Basic inter-process locks (3.14)
Package version 4.0
Homepage https://github.com/zopefoundation/zc.lockfile
Keywords python
Maintainer Python Automaton
License Not yet specified
Other variants v13
Ravenports Buildsheet | History
Ravensource Port Directory | History
Last modified 25 FEB 2026, 19:33:15 UTC
Port created 25 FEB 2026, 19:33:15 UTC
Subpackage Descriptions
single ************************* Basic inter-process locks ************************* 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 .. We don't log failure to acquire. >>> for record in handler.records: # doctest: +ELLIPSIS ... print(record.levelname+' '+record.getMessage()) 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() .. Cleanup >>> import os >>> os.remove('lock') 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 *************** 4.0 (2025-09-18) ================ - Replace pkg_resources namespace with PEP 420 native namespace.
Configuration Switches (platform-specific settings discarded)
PY313 OFF Build using Python 3.13 PY314 ON Build using Python 3.14
Package Dependencies by Type
Build (only) python314:dev:std
python-pip:single:v14
autoselect-python:single:std
Build and Runtime python314:primary:std
Runtime (only) python-setuptools:single:v14
Download groups
main mirror://PYPIWHL/3b/7f/3a614b65bc4b181578b1d50a78663ee02d5d2d3b859712f3d3597c8afe6f
Distribution File Information
aa3aa295257bebaa09ea9ad5cb288bf9f98f88de6932f96b6659f62715d83581 9143 python-src/zc_lockfile-4.0-py3-none-any.whl
Ports that require python-zc.lockfile:v14
python-CherryPy:v14 Object-Oriented HTTP framework (3.14)