Skip to main content

PyPI version Python versions Pypi Downloads Build Status Coverage Status

python-opentracing-async-instrumentation

A collection of asyncio instrumentation tools to enable tracing with OpenTracing API.

Module

Make sure you are running recent enough versions of pip and setuptools, e.g. before installing your project requirements execute this:

pip install --upgrade "setuptools>=29" "pip>=9"

The module name is opentracing_async_instrumentation.

What's inside

Supported client frameworks

The following libraries are instrumented for tracing in this module:

Limitations

  • Only Python 3.5+ is currently supported.

Server instrumentation

For inbound requests a helper function before_request is provided for creating middleware for frameworks like aiohttp and possibly Tornado.

A middleware is provided for aiohttp.

In-process Context Propagation

As part of the OpenTracing 2.0 API, in-process Span propagation happens through the newly defined ScopeManager interface.

Usage

This library provides two types of instrumentation, explicit instrumentation for server endpoints, and implicit instrumentation for client call sites.

Server

Server endpoints are instrumented by creating a (or using a provided) middleware class that:

  1. initializes the specific tracer implementation
  2. wraps incoming request handlers into a method that reads the incoming tracing info from the request and creates a new tracing Span
from aiohttp import web
from opentracing_async_instrumentation.client_hooks import aiohttpserver

async def handler(request):
    return web.Response(body='Hello World')

app = web.Application()
app.router.add_get('/', handler)
app.middlewares.append(aiohttpserver.enable_tracing)

if __name__ == '__main__':
    web.run_app(app)

Client

Client call sites are instrumented implicitly by executing a set of available client_hooks that monkey-patch some API points in several common libraries like aiohttp and aiobotocore. The initialization of those hooks is usually also done from the middleware class's __init__ method.

Usage is via the client_hooks interface.

from opentracing_async_instrumentation import client_hooks

client_hooks.install_all_patches()

Customization

For the aiohttp library, in case you want to set custom tags to spans depending on content or some metadata of responses, you can set response_handler_hook. The hook must be a method with a signature (response, span), where response and span are positional arguments, so you can use different names for them if needed.

from opentracing_async_instrumentation.client_hooks.aiohttpclient import patcher


def hook(response, span):
    if not response.ok:
        span.set_tag('error', 'true')


patcher.set_response_handler_hook(hook)

Development

To prepare a development environment please execute the following commands.

virtualenv env
source env/bin/activate
make bootstrap
make test

You can use tox to run tests as well.

tox

Metadata

Release files for opentracing-async-instrumentation 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for opentracing-async-instrumentation 0.2.1
File Size Uploaded Provenance Actions
opentracing_async_instrumentation-0.2.1.tar.gz 13.9 kB Without provenance Details for opentracing_async_instrumentation-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for opentracing-async-instrumentation 0.2.1
File Interpreter ABI Platform Actions
opentracing_async_instrumentation-0.2.1-py2-none-any.whl Python 2 none any Details for opentracing_async_instrumentation-0.2.1-py2-none-any.whl

Total release size: 34.5 kB

Release files / opentracing_async_instrumentation-0.2.1.tar.gz

Download URL opentracing_async_instrumentation-0.2.1.tar.gz
Size 13.9 kB
Tags Source
SHA-256 checksum
How to use checksums
77668deaf0358ea102b669eab01b600a05f723f5e9ab07f7375d85ecad5d791d
BLAKE2b-256 checksum
How to use checksums
ab292ab7c96b4796361fb33aa311ce3bc8bc23579e943310872e9dd4da94d68f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

Release files / opentracing_async_instrumentation-0.2.1-py2-none-any.whl

Download URL opentracing_async_instrumentation-0.2.1-py2-none-any.whl
Size 20.5 kB
Tags Python 2
SHA-256 checksum
How to use checksums
2024e64efa0c42505cd1842cbea8d296b6042a6f2eeefceb18bfb4592afbbd6c
BLAKE2b-256 checksum
How to use checksums
30a5f90810f2034722be3bca79f54deb893a2d3dbb49ae4570118ec19d589a44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7

Security for opentracing-async-instrumentation 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page