Skip to main content

Basic inter-process locks

Project description

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.

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
>>> for record in handler.records: # doctest: +ELLIPSIS
...     print record.levelname, record.getMessage()
ERROR Error locking file lock; pid=...

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()

Change History

1.0.1 (2012-11-30)

  • Fixed: when there was lock contention, the pid in the lock file was lost.

    Thanks to Daniel Moisset reporting the problem and providing a fix with tests.

  • Added test extra to declare test dependency on zope.testing.

  • Using Python’s doctest module instead of depreacted zope.testing.doctest.

1.0.0 (2008-10-18)

  • Fixed a small bug in error logging.

1.0.0b1 (2007-07-18)

Initial release

Download

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zc.lockfile-1.0.1.tar.gz (8.6 kB view details)

Uploaded Source

File details

Details for the file zc.lockfile-1.0.1.tar.gz.

File metadata

  • Download URL: zc.lockfile-1.0.1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for zc.lockfile-1.0.1.tar.gz
Algorithm Hash digest
SHA256 4698b5d90234fff41e585420aec9206aa4c9f783818f7a263ab31f52ead73d34
MD5 0b08def47a48ad298c705d8220ed23c3
BLAKE2b-256 e28dfa7aab5b03a96bb6a90facb6fb37a83985e83fc1866c265a8d2b271749cd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page