An open API service indexing awesome lists of open source software.

https://github.com/mindflayer/flask-breathalyzer

A Flask module pushing exceptions to Datadog
https://github.com/mindflayer/flask-breathalyzer

Last synced: 9 months ago
JSON representation

A Flask module pushing exceptions to Datadog

Awesome Lists containing this project

README

          

==================
Flask-Breathalyzer
==================

.. image:: https://api.travis-ci.org/mindflayer/flask-breathalyzer.png?branch=master
:target: http://travis-ci.org/mindflayer/flask-breathalyzer

.. image:: https://coveralls.io/repos/mindflayer/flask-breathalyzer/badge.png?branch=master
:target: https://coveralls.io/r/mindflayer/flask-breathalyzer

A Flask module pushing exceptions to Datadog
--------------------------------------------

.. image:: https://raw.githubusercontent.com/mindflayer/flask-breathalyzer/master/Flask-Breathalyzer.png

Features
========
- Pushing exceptions to Datadog;
- Blacklist for `headers` or `data` as list of *XPATH style* strings (you may have some headers you do not want to publish for privacy, or maybe some body fields you do not need to display - e.g.: a base64 blob).

Installation
============
Using pip::

$ pip install flask_breathalyzer[datadog]

Issues
============
When opening an **Issue**, please add few lines of code as failing test, or -better- open its relative **Pull request** adding this test to our test suite.

Quick example
=============
Let's create a new virtualenv with all we need::

$ virtualenv example
$ source example/bin/activate
$ pip install pytest flask_breathalyzer[datadog]

As second step, we create a test `example.py` file as the following one:

.. code-block:: python

from flask import Flask
import datadog

from flask_breathalyzer import Breathalyzer

def test_example():

app = Flask(__name__)

@app.route("/")
def boom():
1/0

# from http://docs.datadoghq.com/api/
options = {
'api_key': 'your-datadog-api-key',
'app_key': 'your-datadog-app-key'
}

ba = Breathalyzer(app, **options)
response = test_client.get('/')
assert response.status == '500 INTERNAL SERVER ERROR'
assert b'500 Internal Server Error' in response.data
assert response.mimetype == 'text/html'
assert isinstance(ba.last_event_id, int) # your exception is now on Datadog with this ID

Let's fire our example test::

$ py.test example.py