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

Reply via email to