babis

Decorator that pings URLs before and after executing the wrapped obj.


Keywords
babis
License
GPL-3.0
Install
pip install babis==0.2.4

Documentation

babis

Decorator that pings URLs before and after executing the wrapped obj. Useful to monitor cron jobs with services like Dead Man's Snitch or HealthChecks.io.

Features

  • Pre and After run pings
  • Custom user agent
  • Silent failures
  • Rate limiting

Usage

Ping after successful execution:

@babis.decorator(ping_after='http://healthchecks.io/XXX')
def cron_job():
  pass

Some services support pre and after hooks to measure the running time:

@babis.decorator(ping_before='http://healthchecks.io/XXX', ping_after='http://healthchecks.io/XXX')
def measured_cron_job():
  pass

You can also send a POST instead of the default GET:

@babis.decorator(ping_before='http://healthchecks.io/XXX', method='post')
def cron_job_with_post():
  pass

And if you don't care if the ping fails, silence the errors:

@babis.decorator(ping_before='http://healthchecks.io/XXX', silent_failures=True)
def cron_job_silent_failure():
  pass

You can also rate limit the number of pings send to play nice with third party services, let's say to at most 1 call in 5 minutes:

@babis.decorator(ping_after='http://healthchecks.io/XXX', rate='1/5m')
def cron_job_rate_limited():
  pass

or at most 24 calls per day:

@babis.decorator(ping_after='http://healthchecks.io/XXX', rate='24/1d')
def cron_job_rate_limited():
  pass

Note that if you defined both ping_after and ping_before URLs then each call counts for two hits by the rate limiter.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.