Skip to main content

aspirator

Python SDK for Aspirator, a minimal self-hosted error tracker. Zero dependencies, deliberately — an error tracker that drags in a dependency tree is one more thing that can break the app it is meant to be watching.

You need an Aspirator server to report to. This package on its own does nothing.

Install

pip install aspirator      # or: uv add aspirator

Use

import aspirator

aspirator.init()   # reads ASPIRATOR_DSN, ASPIRATOR_RELEASE, ASPIRATOR_ENVIRONMENT

try:
    charge(order)
except PaymentError as exc:
    aspirator.capture_exception(exc)

capture_exception also takes a plain string, for a problem you detected rather than caught. It is reported as an issue like any other, named and grouped by its text:

if not rows:
    aspirator.capture_exception("verifier returned no rows", level="warning")

init() also installs interpreter-level hooks, so a crash in a thread, an unretrieved asyncio task or a bare script is reported even where no framework wraps it.

Frameworks

from aspirator.integrations import django as aspirator_django

aspirator.init(integrations=[aspirator_django])

Django, FastAPI/Starlette and Celery are supported, plus a logging integration that forwards log lines and builds breadcrumbs. No middleware entry is needed for any of them — each patches the point that sits outside the whole chain, because middleware only ever sees what is raised below it.

Running under uvicorn? Flush on shutdown

@contextlib.asynccontextmanager
async def lifespan(app):
    yield
    aspirator.close()

app = FastAPI(lifespan=lifespan)

Events are sent by a background thread, and whatever it has not sent yet is flushed at exit. But docker stop sends SIGTERM, and SIGTERM kills a Python process without unwinding — so atexit never runs, and under uvicorn that loses the queue and the open metrics window on every deploy.

gunicorn does not need this (its worker exits normally) and neither does Celery (the integration is wired to the shutdown signals). It is uvicorn specifically, and all three were measured.

Also

Metrics (increment, gauge, timing), cron check-ins, breadcrumbs, request capture, and credential scrubbing by key. Options are typed — the package ships py.typed.

Licence

MIT. Portions derived from sentry-python (MIT); see LICENSE.

Metadata

Release files for aspirator 0.1.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 aspirator 0.1.1
File Size Uploaded
aspirator-0.1.1.tar.gz 97.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aspirator 0.1.1
File Interpreter ABI Platform
aspirator-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 211.7 kB

Release files / aspirator-0.1.1.tar.gz

Download URL aspirator-0.1.1.tar.gz
Size 97.2 kB
Tags Source
SHA-256 checksum
How to use checksums
721664fe0a87286ae6588f25a1bfac43b47919bd2009937f1a8201ee5cd8874f
BLAKE2b-256 checksum
How to use checksums
15effd4cc93e567a99e6e72391548122c8c085de940c828292cb34251447efa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / aspirator-0.1.1-py3-none-any.whl

Download URL aspirator-0.1.1-py3-none-any.whl
Size 114.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4223990325b70c8a0828d074efa1b91e668fd22ac47f2b725ed1ae247009ddbc
BLAKE2b-256 checksum
How to use checksums
8b16126ae51ae4b6f7229daa7b7ab7f8e2afddc33db335f19b6848abe8dd22d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release files

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