Making sure script only runs once instance at a time.

Tim Williams tim at tdw.net
Fri Sep 29 17:26:27 CEST 2006


On 29/09/06, Matthew Warren <Matthew.Warren at digica.com> wrote:
>  I have
> found that in real usage of other programs within the company that use
> lockfiles, it sometimes causes a bit of troubleshooting time when it stops
> working due to a stale lockfile.. This especially happens when the program
> is killed, the lockfile remains and causes minor annoyance (to somebody who
> knows that is, more annoyance to somebody who doesn't).

Then they were checking for the wrong thing :)      Chcking for a lock
file's existance is prone to the above problem.  Checking to see if
anyone "owns" the lock file is better,  and if a running program
doesn't close gracefully it still releases the lock file.

def check_lock():
    import os, sys
    try:
        os.remove({filename})
    except:
        if "Permission denied" in sys.exc_info()[1]:
            print 'This program is already running'
            sys.exit()
    f_lock = open({filename},'w')

You may want to close the lock file properly during a gracefull shutdown.

HTH :)



More information about the Python-list mailing list