Python utility library to run commands in a checked fashion and report the result to Healthchecks.io
Project description
Run Checked
I ran into the struggle, that when running backups via cron I was never quite sure if they succeeded. Sure, I could rely on the cron error mails, but those are not generated when host is down entirely. On my journey to a solution I stumbled across a nice tool called Healthchecks.io. It does two things: Alerting when the cron job fails and when the corn job was not executed according to its schedule.
First, I tried wrapping my more complex backup scripts into bash scripts - monitoring the exit code of commands and piping stdout into a variable to maintain the log in Healthchecks. However, this proved to be quite difficult. Thus I wrote a small Python script to wrap my commands, gather stdout and stderr, and finally report everything back the my Healthchecks instance.
How to use
This is no ready-made script. It is rather intended to be used as a library, to provide quick utility functions.
from runchecked import HealthCheckedContext
with HealthCheckedContext(
"...Your Healthchecks ping-back url here...",
working_dir=".", # Optionally set the general working directory
enable_tty_output=None, # Explicitly activate or deactive the echo to stdout. When left to None, it tries auto-detecting if the shell session is interactive
) as ctx:
# Log some infos
ctx.log.info("Backup started")
# Set some environment variables global to the context
ctx.set_env("Hello", "World")
# Get the environment variable
ctx.log.debug("Hello %s", ctx.get_env("Hello"))
# Run some commands
return_code = ctx.run(
["ls", "-alh", "."], # commands are passed in the same way as in Python's `subprocess` library
allow_fail=False, # When true the context is not terminated, if the program exits with anything but 0
timeout=None, # Optional time for the program in seconds
pass_env=True, # If False only the system environment variables are passed, but not the context ones
)
License
MIT License (c) Martin Peters aka FreakyBytes
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file runchecked-0.1.1.tar.gz
.
File metadata
- Download URL: runchecked-0.1.1.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.23.0 setuptools/44.0.0 requests-toolbelt/0.8.0 tqdm/4.43.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
45a145b44a8a264d03c235377af8264405b894cd83944f7d699ffeea7f904c46
|
|
MD5 |
3c54b5244f64b3a8a20e0fa84f4545f0
|
|
BLAKE2b-256 |
132d242fca10896d22849016c23fa3a5e6599561edcd3fff7686a6f7f6139b93
|
File details
Details for the file runchecked-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: runchecked-0.1.1-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.23.0 setuptools/44.0.0 requests-toolbelt/0.8.0 tqdm/4.43.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
1893632f4fcb0e43c01f7892efa1948621f61acaefcb15990efcb41d5942ca54
|
|
MD5 |
0791417f5cf14826c1c9270f2b7a96fd
|
|
BLAKE2b-256 |
439c4d74d270282590e497c12490a744bbfed23ac3ea685e93430db9a0bb8efa
|