Skip to main content

Periskop Python client

Project description

periskop-python

pypi PyPI pyversions Build Status

Periskop requires collecting and aggregating exceptions on the client side, as well as exposing them via an HTTP endpoint using a well defined format.

This library provides low level collection and rendering capabilities

Install

pip install periskop-client

Usage example

import json
from http.server import HTTPServer

from periskop_client.collector import ExceptionCollector
from periskop_client.exporter import ExceptionExporter
from periskop_client.handler import exception_http_handler
from periskop_client.models import HTTPContext


def faulty_json():
    return json.loads('{"id":')


if __name__ == "__main__":
    collector = ExceptionCollector()
    try:
        faulty_json()
    except Exception as exception:
        # Report without context
        collector.report(exception)
        # Report with HTTP context without request body
        collector.report_with_context(
            exception,
            HTTPContext("GET", "http://example.com", {"Cache-Control": "no-cache"}),
        )
        # Report with HTTP context with request body
        collector.report_with_context(
            exception,
            HTTPContext("GET", "http://example.com", {"Cache-Control": "no-cache"}, "request_body"),
        )

    # Expose collected exceptions in localhost:8081/-/exceptions
    server_address = ("", 8081)
    handler = exception_http_handler(
        path="/-/exceptions", exporter=ExceptionExporter(collector)
    )
    http_server = HTTPServer(server_address, handler)
    http_server.serve_forever()

Using push gateway

You can also use pushgateway in case you want to push your metrics instead of using pull method. Use only in case you really need it (e.g a batch job) as it would degrade the performance of your application. In the following example, we assume that we deployed an instance of periskop-pushgateway on http://localhost:6767:

exporter = ExceptionExporter(collector)
exporter.push_to_gateway("http://localhost:6767")

Run tests

For running tests pytest is needed. A recommended way to run all check is installing tox and then just type tox. This will run pytest tests, black formatter and flake8 and mypy static code analyzers.

Alternatively you can run pip install -r requirements-tests.txt and then run pytest.

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

periskop-client-0.2.0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

periskop_client-0.2.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file periskop-client-0.2.0.tar.gz.

File metadata

  • Download URL: periskop-client-0.2.0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.10 Linux/5.4.0-88-generic

File hashes

Hashes for periskop-client-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a48a759ba571dcf8623451d5ffbf41867c08a5910682ff37d4b41917859e4f28
MD5 b6e2af67efed506f7d55d0c65c5faeb0
BLAKE2b-256 7c2e806047fe83d9eee429d1a31a0c45e383244ad0990149daa27dabeee8b0cc

See more details on using hashes here.

File details

Details for the file periskop_client-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: periskop_client-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.10 Linux/5.4.0-88-generic

File hashes

Hashes for periskop_client-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ea552195260d9ea9ff00719161e8e3a353879e601aa03a7fd2b906a73ac19bc
MD5 9bdb27bda22e83db5fad6bb3fa9c9109
BLAKE2b-256 6b02e278dfa1a151609708d187aa981f5e1ad067a3dfd05a3ac6d292201b6844

See more details on using hashes here.

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