Python SDK

Python SDK for JustAnalytics distributed tracing and error tracking.

Installation#

pip install justanalytics

Quick Start#

import justanalytics

justanalytics.init(
    site_id="YOUR_SITE_ID",
    api_key="YOUR_API_KEY",
    service_name="python-api",
    environment="production",
)

Tracing#

import justanalytics

# Decorator-based tracing
@justanalytics.trace("process-order")
def process_order(order_id: str):
    justanalytics.set_attribute("order.id", order_id)
    return {"status": "processed"}

# Context manager
with justanalytics.start_span("fetch-user") as span:
    span.set_attribute("user.id", user_id)
    user = db.users.get(user_id)

Error Tracking#

try:
    risky_operation()
except Exception as e:
    justanalytics.capture_exception(e, tags={"module": "payments"})

Logging#

justanalytics.logger.info("Request processed", path="/api/orders", duration=245)
justanalytics.logger.error("Payment failed", order_id="123", reason="declined")

Framework Integrations#

Django#

# settings.py
MIDDLEWARE = [
    "justanalytics.django.JustAnalyticsMiddleware",
    # ... other middleware
]

JUSTANALYTICS = {
    "SITE_ID": os.environ["JUSTANALYTICS_SITE_ID"],
    "API_KEY": os.environ["JUSTANALYTICS_API_KEY"],
    "SERVICE_NAME": "django-app",
}

Flask#

from flask import Flask
from justanalytics.flask import JustAnalyticsFlask

app = Flask(__name__)
JustAnalyticsFlask(app, service_name="flask-api")

FastAPI#

from fastapi import FastAPI
from justanalytics.fastapi import JustAnalyticsMiddleware

app = FastAPI()
app.add_middleware(JustAnalyticsMiddleware, service_name="fastapi-api")

Auto-Instrumentation#

The Python SDK automatically instruments:

  • HTTP requests via requests and httpx
  • PostgreSQL via psycopg2
  • Redis via redis-py
  • SQLAlchemy ORM queries
  • Celery task execution

Custom Metrics#

justanalytics.record_metric("custom.queue_size", 42, tags={"queue": "emails"})

Requirements#

  • Python 3.8+
  • Compatible with asyncio, threading, and multiprocessing