pythonpidlockfile

Python: module for creating PID-based lockfile?


I'm writing a Python script that may or may not (depending on a bunch of things) run for a long time, and I'd like to make sure that multiple instances (started via cron) don't step on each others toes. The logical way to do this seems to be a PID-based lockfile… But I don't want to re-invent the wheel if there is already code to do this.

So, is there a Python module out there which will manage the details of a PID-based lockfile?


Solution

  • If you can use GPLv2, Mercurial has a module for that:

    http://bitbucket.org/mirror/mercurial/src/tip/mercurial/lock.py

    Example usage:

    from mercurial import error, lock
    
    try:
        l = lock.lock("/path/to/lock", timeout=600) # wait at most 10 minutes
        # do something
    except error.LockHeld:
         # couldn't take the lock
    else:
        l.release()