Periskop Python client
Project description
periskop-python
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
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 periskop_client-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ea552195260d9ea9ff00719161e8e3a353879e601aa03a7fd2b906a73ac19bc |
|
MD5 | 9bdb27bda22e83db5fad6bb3fa9c9109 |
|
BLAKE2b-256 | 6b02e278dfa1a151609708d187aa981f5e1ad067a3dfd05a3ac6d292201b6844 |