Skip to main content

A simple util library for creating applications which needs to keep running, despite abnormalities

Project description

Build Status About

A simple util library for creating applications which needs to keep running, despite abnormalities

Installing

pip install pyrobustness

Usage

Timeout example:

from robust.tools import timeout


@timeout(5)
def very_long_job():
    import time
    while True:
      print("Zzz")
      time.sleep(1)

very_long_job()

Retry example:

from robust.tools import retry

@retry(5)
def very_broken_method():
    print(".")
    raise RuntimeError("Something is broken...")

while True:
    very_broken_method()

Circuit Breaker example:

import time
from robust.tools import breaker

counter = 0

@breaker(limit=5, revive=5)
def very_broken_method():
    nonlocal counter
    if counter <= 5:
        counter += 1
    	raise RuntimeError("Something is broken...")
    else:
        print("We've made it!")


while True:
    try:
    	very_broken_method()
    except RuntimeError:
        pass
    except Exception:
        break

time.sleep(5)
very_broken_method()

Version History

  • 1.1:
    • Additional type for alarm - threading to support Windows OS, or certain cases when signal is not working as supposed
    • CircuitBreaker pattern, inspired by speech by Daniel Riti @Pycon 2016
  • 1.0: Initial version

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

pyrobustness-1.1.2.tar.gz (3.5 kB view hashes)

Uploaded Source

Built Distribution

pyrobustness-1.1.2-py3-none-any.whl (5.4 kB view hashes)

Uploaded Python 3

Supported by

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