On 2017-04-19, Matt <matt.mailingli...@gmail.com> wrote: > I have a number of simple scripts I run with cron hourly on Centos > linux. I want the script to check first thing if its already running > and if so exit. > > In perl I did it with this at the start of every script: > > use Fcntl ':flock'; > INIT { > open LH, $0 or die "Can't open $0 for locking!\nError: $!\n"; > flock LH, LOCK_EX | LOCK_NB or die "$0 is already running > somewhere!\n"; > } > > How can I do something like this in Python?
I did exactly that very recently (well, I used a different file for the lock rather than the script itself, but it could easily be altered): import errno import fcntl import os import sys LOCKFILE = "...lock file name..." lockfd = os.open(LOCKFILE, os.O_WRONLY | os.O_CREAT) try: fcntl.flock(lockfd, fcntl.LOCK_EX | fcntl.LOCK_NB) except IOError as exc: if exc[0] != errno.EAGAIN: raise sys.exit(0) -- https://mail.python.org/mailman/listinfo/python-list