Thus, without using a third-party library such as filelock , you need to do something like this:
import os from subprocess import check_call if os.path.exists("/var/run/foo.ock"): print("Backing off...") raise SystemExit(1) try: with open("/var/run/foo.lock", "w"): check_call("/path/to/binary") finally: os.remove("/var/run/foo.lock")
Better to use filelock (if you can install third-party libraries):
from filelock import FileLock with FileLock("/path/to/binary"): check_call("/path/to/binary")
You can easily install filelock with pip :
$ pip install filelock
See also similar: Python file lock
Note. . It also seems to be a very similar package called lockfile ! (Do not confuse them!)
James mills
source share