No description or website provided.
Python
Latest commit a0f3495 Jan 11, 2017 @killpanda killpanda committed on GitHub Merge pull request #7 from santtu/patch-1
guard against _zipkin_span not set in g
Permalink
Failed to load latest commit information.
.gitignore init commit Oct 25, 2016
README.md add logging fuc Nov 19, 2016
flask_zipkin.py guard against _zipkin_span not set in g Jan 11, 2017
setup.py init commit Oct 25, 2016

README.md

flask-zipkin

a flask zipkin extesion based on py_zipkin.

Installation

pip install flask_zipkin

usage

you can simply use it as other flask extensions.

from flask_zipkin import Zipkin

zipkin = Zipkin(sample_rate=10)
zipkin.init_app(app)

Advance Usage

you could gen a header to pass it to other services, the downstream service will recieve this header.

@bp.route('/')
def hello():
    headers = {}
    headers.update(zipkin.create_http_headers_for_new_span())
    r = requests.get('http://localhost:5001', headers=headers)
    return r.text

flask_zipkin will use http transport by default. You could define a transport, like:

@zipkin.transport_handler
def default_handler(self, encoded_span):
    body = str.encode('\x0c\x00\x00\x00\x01') + encoded_span
    return requests.post(
        'your transport dsn',
        data=body,
        headers={'Content-Type': 'application/x-thrift'},
)

flask_zipkin eats all transport exception by default. You could define an exception handler, like:

@zipkin.transport_exception_handler
def default_ex_handler(self, ex):
    raise ex

and also, you could exempt some views, like:

@zipkin.exempt
@bp.route('/')
def hello():
    return 'hello world'

add key, value for your tracing record, like:

zipkin.logging(id=1, user_id=2)

app configs

ZIPKIN_DISABLE disable zipkin tracking if value is True

ZIPKIN_DSN http transport dsn: such as http://localhost:9411/api/v1/spans