Skip to main content

Tiny asynchronous implementation of healthcheck provider and http-server

Project description

aio_tiny_healthcheck

Tiny asynchronous implementation of healthcheck provider and server

Usage

By default, the AioTinyHealthcheck returns 200 if all checks successfully finish or 500 in opposite case.

Using with aiohttp

from aiohttp import web

from aio_tiny_healthcheck.aio_tiny_healthcheck import AioTinyHealthcheck

def some_sync_check():
    return True

async def some_async_check():
    return False

healthcheck_provider = AioTinyHealthcheck()
healthcheck_provider.add_check('sync_check_true', some_async_check)
healthcheck_provider.add_check('async_check_false', some_async_check)


app = web.Application()
app.router.add_get('/healthcheck', healthcheck_provider.aiohttp_handler)
web.run_app(app)

Using with Sanic

from sanic import Sanic
from sanic.response import json
from aio_tiny_healthcheck.aio_tiny_healthcheck import AioTinyHealthcheck

app = Sanic()

def some_sync_check():
    return True

async def some_async_check():
    return False

healthcheck_provider = AioTinyHealthcheck(success_code=201, fail_code=400)
healthcheck_provider.add_check('sync_check_true', some_async_check)
healthcheck_provider.add_check('async_check_false', some_async_check)

@app.route("/healthcheck")
async def test(request):
    hc_response = healthcheck_provider.check_handler()
    return json(hc_response.body, status=hc_response.code)

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

Using in concurrent mode

You should want to run healthcheck in background if you already have some blocking operation in your wxwcution flow. So, you can just use built-in server for this.

from aio_tiny_healthcheck.aio_tiny_healthcheck import AioTinyHealthcheck
from aio_tiny_healthcheck.healthcheck_server_http import HealthcheckServerHttp
import asyncio


async def some_long_task():
    await asyncio.sleep(3600)


def some_sync_check():
    return True


async def some_async_check():
    return True


aio_thc = AioTinyHealthcheck()
hc_server = HealthcheckServerHttp(
    aio_thc,
    path='/health',
    host='localhost',
    port=9090
)

aio_thc.add_check('sync_check_true', some_async_check)
aio_thc.add_check('async_check_false', some_async_check)


async def main():
    asyncio.create_task(hc_server.run())
    await some_long_task()


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

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

aio_tiny_healthcheck-0.1.0.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aio_tiny_healthcheck-0.1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file aio_tiny_healthcheck-0.1.0.tar.gz.

File metadata

  • Download URL: aio_tiny_healthcheck-0.1.0.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for aio_tiny_healthcheck-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f949da07ebed2700f5d4ca4b748b4d50518650dd1424d0b6923d7cc2c236c9a5
MD5 77158b50a6e28baa9dd9615ef2b5d133
BLAKE2b-256 a5d4dd1f2e1893b030c321387c614747ce9579186002a273ca623cf2c0e5d121

See more details on using hashes here.

File details

Details for the file aio_tiny_healthcheck-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: aio_tiny_healthcheck-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for aio_tiny_healthcheck-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6a6de0434614acfbd7ef8a799f2adefd6aac55e62cf824cf3303a8dc62bef86e
MD5 41de6f24e8b2173d23510dad050bf9ba
BLAKE2b-256 f8d8fb19329b0d5d5b62413a4b06289a510b2f4706230df6e62fc85d54abe7f1

See more details on using hashes here.

Supported by

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