Ensure a single process is running. Using lockfile and process checking.
Project description
Ensure a single process is running. Using lockfile and process checking.
Why?
Sometime you want that a process runs at most once, for example a scheduled cron job that should always finish before starting again. That was my case.
Install
pip install sing
Examples
Normally, at the beginning of the file, you may want to declare, that you want to be the single instance:
from sing import single
assert single()
That’s it, for most of the use case, you don’t need anything else. The assert will fail if the lock is already taken.
This uses a pid lockfile, in a temporary folder to ensure this. More on that in sing.py
You may want to grant all the lock from the same process, in that case you’ll need.
assert single(allow_all_from_this_process=True)
You may have different subsections, and you want to have different locks, even if you’re on the same process, both of them will return True:
single(flavor='first')
single(flavor='second')
Finally, if a PID file is there, but the process died, you may want to grant the lock. Use the ensure_process_running to check it.
Notes
Free software: MIT license
Documentation: https://python-sing.readthedocs.io.
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
Lot of inspiration comes from pycontribs/tendo that serves the same purpose. I needed PID file, and allow same process grants, so I made this package.
History
0.1.0 (2018-02-25)
First release on PyPI.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file sing-0.1.5.tar.gz
.
File metadata
- Download URL: sing-0.1.5.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0c79093e57c08dedd93a2f1735b2e21d5515b3ba0312f2daa0fc0a696d79d50 |
|
MD5 | 3320da6c4d5ee8bfb260e7772c585cf0 |
|
BLAKE2b-256 | b2b528c3191b15f05ec987c8516a9a7f534496c164be935012df794c680eea81 |