Metadata-Version: 2.1
Name: file-healthchecker
Version: 0.1.1
Summary: Check health of static, long running applications using generated files.
Home-page: UNKNOWN
Author: Ankur Srivastava
Author-email: ankur.srivastava@email.de
License: UNKNOWN
Download-URL: https://github.com/ansrivas/healthchecker/0.1.1.tar.gz
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6.0
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: python-language-server[all] ; extra == 'dev'
Requires-Dist: black (==19.3b0) ; extra == 'dev'
Provides-Extra: test
Requires-Dist: pytest (==5.2.1) ; extra == 'test'
Requires-Dist: pytest-sugar (==0.9.2) ; extra == 'test'
Requires-Dist: pytest-asyncio (==0.10.0) ; extra == 'test'
Requires-Dist: pytest-cov (==2.8.1) ; extra == 'test'

# file-healthchecker

Use this application to monitor your long running "non-web" application's health check.

[![Build Status](https://travis-ci.com/ansrivas/healthcheck.svg?token=hM6V8mr5fwQPseiFSYVi&branch=master)](https://travis-ci.com/ansrivas/healthcheck)

## Installation

### pip

```
pip install file-healthchecker
```

## Use Case

Lets say we have a service which needs to perform some action every x-duration.
In python-world we would simply run it inside a while loop and invoke it every x-minutes.

Now define an environment var `ENV_HEALTH_CHECK_FILE` which will represent a file creation
in case the app is healthy. for e.g. `export ENV_HEALTH_CHECK_FILE=/tmp/myapp.is.healthy`

This following snippet will perform following tasks:

- Every invocation of my_application will first remove a health-check file.
- Run the application
- NOTE: Raise an exception in case the application is failing. Handle it outside, as show in the given example.
- If no exception is raised, the decorator will create a file defined by the env-var `ENV_HEALTH_CHECK_FILE`

```python
from file_healthchecker import decorator_success
import time

@decorator_success
def my_application():
    ... doing lots of work
    ... more work
    # in case of failure, raise exception
    return True

if __name__ == "__main__":
    while True:
        try:
            my_application()
        except Exception:
            pass
        time.sleep(10)

```
With the installation another cmd-app also gets installed - `checkhealth`.

How to check application's health?
- One can simply run `ENV_HEALTH_CHECK_FILE=/tmp/myapp.is.healthy checkhealth` at regular intervals or
- pass this command to orchestrators like `Nomad`, `Kubernetes`, etc. as a part of their health-check commands.

## Current Stable Version

```
0.1.0
```

### Development Installation

- Clone the project.
- Now install the application in editable mode and you are ready to start development

```
$ pip install -e .
```

## Test

To run the tests:

```
make test
```

## License

MIT


