fastotel
A Rust-backed drop-in for the OpenTelemetry Python SDK that takes tracing overhead off the request path.
Status: pre-alpha.
OTLPSpanProcessorsends spans over OTLP/HTTP, but only some of their fields so far (ids, name, kind, times, string attributes), with no retries, gzip orOTEL_*configuration, and a process forked after the first span exports nothing from the child. The road to 1.0 is in #5.
Why
Instrumentation packages (FastAPI, httpx, SQLAlchemy, aiokafka, …) depend only on opentelemetry-api.
fastotel replaces parts of opentelemetry-sdk behind that API, so existing instrumentation keeps working.
In the pure-Python SDK, the BatchSpanProcessor worker thread encodes OTLP protobuf, gzips and sends spans
while holding the GIL, so it competes for CPU with request handling. In Rust, batching, encoding, compression
and export run on a thread that never takes the GIL.
Installation
pip install fastotel
Wheels are built for Linux (glibc and musl), macOS and Windows, x86_64 and arm64:
| Python | Wheel | Tested in CI |
|---|---|---|
| CPython 3.11, 3.12, 3.13, 3.14 | one abi3 wheel per platform, which also covers later versions |
yes |
| CPython 3.14t, free-threaded | cp314t; the GIL stays off after import |
yes |
| CPython 3.15 (pre-release) | the abi3 wheel |
yes |
| CPython 3.15t (pre-release) | none yet: builds from the sdist; a wheel ships with 3.15.0 | yes, from source |
CPython 3.10 reached end of life on 2026-10-01 and is not supported. Free-threaded 3.13t is not supported either: it was experimental, and PyO3 builds free-threaded extensions from 3.14 on.
Usage
fastotel replaces BatchSpanProcessor with OTLPSpanExporter; the SDK keeps creating spans:
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from fastotel import OTLPSpanProcessor
provider = TracerProvider()
provider.add_span_processor(OTLPSpanProcessor(endpoint="http://localhost:4318/v1/traces"))
trace.set_tracer_provider(provider)
endpoint is the URL spans are posted to, /v1/traces included, as for OTLPSpanExporter; the one above is the
default. on_end copies the span into Rust and returns; a native thread, started by the first span, batches,
encodes and sends spans without taking the GIL. As with BatchSpanProcessor, only sampled spans are exported, a
batch leaves at 512 spans or every 5 seconds, and spans beyond a queue of 2048 are dropped.
Development
Needs uv and a Rust toolchain (rustup).
make install # build the extension, install the dev dependencies
make test # run the tests, those of the Rust export pipeline (crates/export) too
make lint # ruff, mypy, cargo fmt, clippy
make bench # what the stock SDK costs an application, on a GIL and a free-threaded build (~30 min)
Every change that reaches master is a release: a pull request bumps the version in pyproject.toml
(uv version --bump patch) and adds its section to CHANGELOG.md.
License
Metadata
Release files for fastotel 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastotel-0.4.0.tar.gz | 91.8 kB | Details |
Built distributions (wheels)
Total release size: 23.4 MB
Release files / fastotel-0.4.0.tar.gz
| Download URL | fastotel-0.4.0.tar.gz |
|---|---|
| Size | 91.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2caefdbb018c9a9e96dd0c3cebaac18da24ef722bb9870f06d7ce2d61eb75313
|
|
BLAKE2b-256 checksum How to use checksums |
5169eb21a99895787c67eaa24c7643042ac8146bc235dc1ac02f2de2977acae8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp314-cp314t-win_arm64.whl
| Download URL | fastotel-0.4.0-cp314-cp314t-win_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows ARM64 |
|
SHA-256 checksum How to use checksums |
f430d3a8107ddea0537e624d4beb9694328681c05c9ca1a91294a6a43a590de8
|
|
BLAKE2b-256 checksum How to use checksums |
769c7a12e316b3847534a2515e0b463708c85c3f5548b7b6c6c277d208dcf503
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp314-cp314t-win_amd64.whl
| Download URL | fastotel-0.4.0-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5bd25c1541f71be0c9cda6340eedcaec208305807a6d812e36c479e41a6738b1
|
|
BLAKE2b-256 checksum How to use checksums |
850aab73da2edde2f7047ddd8db45df2bb6ce3a66277db60c21d76b06fd66644
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | fastotel-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
dc367cdfa205e2545150d8a1746466013989605a2b376af76c9864288789e502
|
|
BLAKE2b-256 checksum How to use checksums |
6c1b06ae1015e72e48cb47da86f30a4c29643d81127dd6cea8e7cce414613c82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl
| Download URL | fastotel-0.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
101d054b5aacc3e86e63bb05b216d3231b0858f096896056d4f528a3cf45c347
|
|
BLAKE2b-256 checksum How to use checksums |
ac99821050840ff7561e3c27c5221bb21cb971acd47ab464ad73e0912338528c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fastotel-0.4.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
0548e17dc06d112217534066f7117b4baa6a90d850c8ec90692ae966be15032d
|
|
BLAKE2b-256 checksum How to use checksums |
0e630dc3b2c35563b2f6f80b3f8ca033dd631f0fa26e8414cd23bfe9eb4f76c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | fastotel-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
e4c607be75fe0a7885732d95903d307551627577355901138b0b8d0cfad11f32
|
|
BLAKE2b-256 checksum How to use checksums |
b27f1a6771ec9c3e16abdd819c50fe2541a983d947b6f8ccc9e1b15453f8ee83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | fastotel-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
813beed4f4d356198be7bcf7f1d874ae49d002baa16dc8dd3ab8490b74456f40
|
|
BLAKE2b-256 checksum How to use checksums |
cc8a12e6925e9acd239edfef9589d104471f6815bb9ce821459d705b05f2b1cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl
| Download URL | fastotel-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
c24909114c19e7981f2a753beec79ad3d11fdc3e2a09dd20dcf5b89dd478601b
|
|
BLAKE2b-256 checksum How to use checksums |
a3800f68958a448090b76543bf386ae661fcf623d55b8d8bac67244763fc1290
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp311-abi3-win_arm64.whl
| Download URL | fastotel-0.4.0-cp311-abi3-win_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d0499a887b161cc5cd901ac17c854cca923682f059ef20cb054e054d7029af83
|
|
BLAKE2b-256 checksum How to use checksums |
5f76e88fdeda90242b8496093a5a6818f05eb546bc15395f40f226323bc07d8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp311-abi3-win_amd64.whl
| Download URL | fastotel-0.4.0-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c27d41b82eabfa5cc080678892d0a81003414fc796fb9925a179dc948d69cca8
|
|
BLAKE2b-256 checksum How to use checksums |
e418974026637a72a771cea8cf8e4645da86e1ccf3444b65087b6a3b1a8f19c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp311-abi3-musllinux_1_2_x86_64.whl
| Download URL | fastotel-0.4.0-cp311-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
9a294a7f8b50afdb819d5482dd0b3a81e95423115f905ba7e371e0a4feb87726
|
|
BLAKE2b-256 checksum How to use checksums |
5cf1bf777a9b76e812d6d08e72a499b4629f1edaf661f0b8cee8633c3ee7f7fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp311-abi3-musllinux_1_2_aarch64.whl
| Download URL | fastotel-0.4.0-cp311-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
73927618361f78e69b142558dbfa50cc700754695db651a88ade5185c9fe7506
|
|
BLAKE2b-256 checksum How to use checksums |
d2ba9d0f72c3c28380efbf8365a2961d385ba208c38d13b898d41e817282e8d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fastotel-0.4.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
1359a15367587f0b3a03ab436bce42a03c8e1f54078e368ec9b2e489a6e99245
|
|
BLAKE2b-256 checksum How to use checksums |
e405c6334125b39929b5c181bc23002829ce722be18cce13ca9e8d3e4332f6a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | fastotel-0.4.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
cd495f307e275e511fb98b4e7049c6a6a9d3c754cfa5e72cb1268d3123f16494
|
|
BLAKE2b-256 checksum How to use checksums |
79fcfcbf3909add89a9cf87f85a32aa4de531ebfcd40d7aa273275c0ba9ec65f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | fastotel-0.4.0-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
88e88a570365c713e6779d5bb534b38e96dfec88879e578a39b9573dd419453d
|
|
BLAKE2b-256 checksum How to use checksums |
4b8c7823b060d63f80819734c11e3a161d11ddda782222d3b197cb9e37ecd337
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / fastotel-0.4.0-cp311-abi3-macosx_10_12_x86_64.whl
| Download URL | fastotel-0.4.0-cp311-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
393af8bb841a6df8a911edd1e28604fb39bed142f05a0688be5ef360d00cbbe3
|
|
BLAKE2b-256 checksum How to use checksums |
6b7c0cee2f9f2c2932ff422d448b3264760bbd57c82cb357c26aacebc39d8d62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log