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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a48a759ba571dcf8623451d5ffbf41867c08a5910682ff37d4b41917859e4f28 |
|
MD5 | b6e2af67efed506f7d55d0c65c5faeb0 |
|
BLAKE2b-256 | 7c2e806047fe83d9eee429d1a31a0c45e383244ad0990149daa27dabeee8b0cc |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ea552195260d9ea9ff00719161e8e3a353879e601aa03a7fd2b906a73ac19bc |
|
MD5 | 9bdb27bda22e83db5fad6bb3fa9c9109 |
|
BLAKE2b-256 | 6b02e278dfa1a151609708d187aa981f5e1ad067a3dfd05a3ac6d292201b6844 |