common.app.health_check module

Health check module. It runs a web service on localhost and the specified port. The health state of the application can be queried at the ‘health’ end point.

The implementation of health check response is based on ‘Health Check Response Format for HTTP APIs’ (https://datatracker.ietf.org/doc/html/draft-inadarei-api-health-check-06)

class common.app.health_check.State(value)

Bases: Enum

Possible microservice states

WARMUP = 'Warming up'
WORK = 'Working'
SHUTDOWN = 'Shutting down'
NOINFO = 'No information'
class common.app.health_check.Status(value)

Bases: Enum

Possible statuses the api can return

PASS = 'pass'
FAIL = 'fail'
WARN = 'warn'
class common.app.health_check.Response(service_name: str)

Bases: object

Parent class of different responses

status: Status
notes: List[str]
__init__(service_name: str)
property create_response

Composes the response to an http request

class common.app.health_check.Pass(service_name: str)

Bases: Response

Response of passed status. For “pass” status, HTTP response code in the 2xx-3xx range MUST be used.

status: Status = 'pass'
status_code = 200
notes: List[str] = ['Service is running']
class common.app.health_check.Fail(service_name: str)

Bases: Response

Response of failed status. For “fail” status, HTTP response code in the 4xx-5xx range MUST be used.

status: Status = 'fail'
status_code = 503
notes: List[str] = ['No information about the service']
class common.app.health_check.Warn(service_name: str)

Bases: Response

Response of warning status. In case of the “warn” status, endpoints MUST return HTTP status in the 2xx-3xx range, and additional information SHOULD be provided, utilizing optional fields of the response.

status: Status = 'warn'
status_code = 202
notes: List[str] = ['Service is not healthy, it is warming up or shutting down']
class common.app.health_check.HealthCheck(logger, service_name: str, host='127.0.0.1', port=8008)

Bases: object

Class for running web service to access the ‘health’ endpoint

__init__(logger, service_name: str, host='127.0.0.1', port=8008)
async health(_msg)

Handler for the health check endpoint. The response is in JSON format.

async run_server()

Run the web service on localhost and the specified port

set_state_warm_up()

Set the service state to ‘Warming up’

set_state_working()

Set the service state to ‘Working’

set_state_shut_down()

Set the service state to ‘Shutting down’

set_state_no_info()

Set the service state to ‘No information’