Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

Ensure single instance of a command without leaving stale lock files.

Project description

A wrapper command to provide an advisory lock, without leaving stale lock files. Usage: single.py [options] -c command args..

Options:
-h, --help show this help message and exit
-f LOCK_FILE, --lock-file=LOCK_FILE
 Path to the lock file. Default is provided based on the command path if omitted.
-s, --status Check to see if the file is locked, and if so, by which process. Exit status is 0 if unlocked, 1 if locked.

flock(2)’ed file is used to provide locking. This will not leave stale lock files around. Note that the existance of lock file does not mean that there is an outstanding lock; exclusive flock must be held by a process. So use ‘single.py –status -f /tmp/foo.lock’ to see if the lock is held.

The OS releases the lock upon process termination, so the lock file is released regardless of how the job terminated.

Invocations:

  • single.py -c long-running-scrit arg1 arg2 will ensure only one long-running-scrit will run at a time. Default lock file, specific to the command, is used in the absence of -f option.
  • Lockfile can be explicitely specified as: single.py -f /tmp/lrs-foo.lock -c long-running-scrit foo Two jobs using the same command could be run concurrently by using different lock files, like: single.py -f /tmp/lrs-bar.lock -c long-running-scrit bar
  • Use –status (-s) option to check if a command or a file is locked: single.py -s -f /tmp/foo.lock single.py -s -c long-running-scrit

Example: $ single.py -c sleep 3 & for x in {0..6}; do single.py -s -c sleep; sleep 1; done [1] 32567 locked by 32567: /tmp/single.py_bin_sleep.flock locked by 32567: /tmp/single.py_bin_sleep.flock locked by 32567: /tmp/single.py_bin_sleep.flock [1]+ Done single.py sleep 5 not locked: /tmp/single.py_bin_sleep.flock not locked: /tmp/single.py_bin_sleep.flock

Project details


Release history Release notifications

This version
History Node

0.0.2

History Node

0.0.1

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
single-0.0.2.tar.gz (3.7 kB) Copy SHA256 hash SHA256 Source None Aug 22, 2011

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page