Health Check API for multiprocessing python apps
Project description
A Health Check API Library for Multiprocessing Python Apps
This library adds a health check REST API to your multiprocessing apps. You can add decorators to your periodic running
functions and library will track the function calls. This library supports multiprocessing
threads. You can fetch
a single overall app status by fetching
http://<ip>:<port>/health
, a single overall app readiness by fetching
http://<ip>:<port>/ready
, or detailed statuses of all service with fetching
http://<ip>:<port>/health?v
http://<ip>:<port>/ready?v
Usage
Set PY_HEALTH_CHECK_HOST
and PY_HEALTH_CHECK_PORT
environment variable and add the appropriate decorator to
your periodic functions or class methods
import time
import multiprocessing as mp
import healthcheck_python
def run_continuously():
while True:
run_once()
time.sleep(1)
@healthcheck_python.periodic(service="my_service1", timeout=10)
@healthcheck_python.healthy(service="my_service1")
def run_once():
do_something()
@healthcheck_python.periodic(timeout=5)
class MyProcess(mp.Process):
def __init__(self, queue):
super().__init__()
self.queue = queue
self.continue_running = True
self.var = 0
def run(self):
self.init()
while self.continue_running:
self.do_the_thing_once()
time.sleep(1)
@healthcheck_python.healthy
def do_the_thing_once(self):
self.do_something()
@healthcheck_python.mark_ready
def init(self):
self.var = 1
@healthcheck_python.mark_done
def cleanup(self):
self.queue.close()
With these wrappers, run_once()
has to called every 10 seconds and MyProcess.do_the_thing_once()
has to be called every 5 seconds. If at least one fails, the app status will be down.
$ curl http://localhost:8080/health
{"status": true}
$ curl http://localhost:8080/health?v
{"status": true, "ready": false, "services": {"my_service1": {"ready", false, "latest_start": 1611137135.3203568, "latest_end": 1611137135.3203998, "fps":0, "timeout": 10},"MyProcess": {"ready":true, "latest_start": 1611137135.3203568, "latest_end": 1611137135.3203998, "fps":0, "timeout": 5}}}
Set PY_HEALTH_TEST_MODE
to disable the functionality. Your functions will run without any intervention and no port will be listened
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
Hashes for healthcheck_python-0.9.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5535962ed7226f9fbeb58f12caaed64e1f06bc0e4f3e7a6d013e98a14825deba |
|
MD5 | 439538f943d4670e25e3e44e293a9503 |
|
BLAKE2b-256 | eebe930ebf8597fe1bd820711a00698663afaf0df394e121b0783867ee5e55b7 |