Skip to main content

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


Download files

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

Source Distribution

runchecked-0.1.1.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

runchecked-0.1.1-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

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

Hashes for runchecked-0.1.1.tar.gz
Algorithm Hash digest
SHA256 45a145b44a8a264d03c235377af8264405b894cd83944f7d699ffeea7f904c46
MD5 3c54b5244f64b3a8a20e0fa84f4545f0
BLAKE2b-256 132d242fca10896d22849016c23fa3a5e6599561edcd3fff7686a6f7f6139b93

See more details on using hashes here.

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

Hashes for runchecked-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1893632f4fcb0e43c01f7892efa1948621f61acaefcb15990efcb41d5942ca54
MD5 0791417f5cf14826c1c9270f2b7a96fd
BLAKE2b-256 439c4d74d270282590e497c12490a744bbfed23ac3ea685e93430db9a0bb8efa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page