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:
- aiobotocore — Asyncio AWS SDK for Python
- aioboto3 — Asyncio AWS SDK for Python (uses aiobotocore under the hood)
- aiohttp - Asyncio HTTP server and client
- aiomysql
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:
- initializes the specific tracer implementation
- 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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.