Skip to main content

Automatic HTTP request monitoring for Python applications

Project description

API Monitor SDK

Automatically monitor all HTTP requests in your Python application with zero code changes.

Installation

pip install api-monitor-sdk

Quick Start

from apimonitor import Monitor
import requests

# Initialize monitor
monitor = Monitor(api_key="your-api-key-from-dashboard")
monitor.start()

# All HTTP requests now automatically tracked
response = requests.get("https://api.github.com/users/octocat")
# Metrics sent in background - your app continues normally

# Optional: track custom business events
monitor.track_custom("payment_processed", amount=100, user_id="123")

Features

  • Zero-code monitoring - Just call monitor.start()
  • Supports multiple libraries - requests, httpx, aiohttp
  • Background sending - Non-blocking, won't slow your app
  • Batching - Sends 100 requests or every 10 seconds
  • Offline queue - Buffers metrics when network fails
  • Sampling - Monitor 10% of traffic to reduce overhead
  • Thread-safe - Works with multi-threaded applications

Configuration

monitor = Monitor(
    api_key="your-api-key",
    endpoint="https://api.yourmonitor.com/ingest",  # Custom endpoint
    batch_size=100,              # Send after N requests
    batch_timeout=10,            # Or after N seconds
    sampling_rate=1.0,           # 1.0 = 100%, 0.1 = 10%
    offline_mode=True,           # Buffer when network fails
    debug=True                   # Print debug logs
)
monitor.start()

Framework Examples

Flask

from flask import Flask
from apimonitor import Monitor

app = Flask(__name__)

monitor = Monitor(api_key="your-key")
monitor.start()

@app.route("/")
def home():
    # Any requests made here are auto-tracked
    return "Hello World"

FastAPI

from fastapi import FastAPI
from apimonitor import Monitor

app = FastAPI()

monitor = Monitor(api_key="your-key")
monitor.start()

@app.get("/")
def home():
    return {"message": "Hello World"}

Django

# In your settings.py or apps.py

from apimonitor import Monitor

monitor = Monitor(api_key="your-key")
monitor.start()

Advanced Usage

Custom Events

Track business-specific events:

# Track payment
monitor.track_custom("payment_processed", 
                     amount=99.99, 
                     currency="USD",
                     user_id="user_123")

# Track signup
monitor.track_custom("user_signup",
                     email="user@example.com",
                     plan="premium")

Stopping the Monitor

# Gracefully stop and flush remaining metrics
monitor.stop()

How It Works

  1. Interception - Monkey-patches HTTP libraries (requests, httpx, aiohttp)
  2. Collection - Captures timing, status, URL, errors
  3. Batching - Queues metrics until batch size or timeout reached
  4. Sending - Background thread sends to API endpoint
  5. Offline Queue - If network fails, saves to local SQLite database
  6. Auto-flush - On program exit, sends remaining metrics

Supported Libraries

  • requests - Most popular HTTP library
  • httpx - Modern async HTTP library
  • aiohttp - Async HTTP client/server
  • 🚧 urllib3 - Coming soon
  • 🚧 http.client - Coming soon

Requirements

  • Python 3.8+
  • requests (automatically installed)

License

MIT

Support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

api_monitor_sdk-0.1.3.tar.gz (27.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

api_monitor_sdk-0.1.3-py3-none-any.whl (33.7 kB view details)

Uploaded Python 3

File details

Details for the file api_monitor_sdk-0.1.3.tar.gz.

File metadata

  • Download URL: api_monitor_sdk-0.1.3.tar.gz
  • Upload date:
  • Size: 27.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for api_monitor_sdk-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a63b8e1e96ab4fdb2c9d9a1249c7861f67593092a0d3399de5883ba30fe69adc
MD5 3e06f4edb4ea449b5c6dc06327410ece
BLAKE2b-256 62857e3b4b4dd281dcffeb3c4ff649d0d37cf9f55fb1c02c268d8b2196813b0a

See more details on using hashes here.

File details

Details for the file api_monitor_sdk-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for api_monitor_sdk-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 80bd31baadffc7dbaddd06e444a12d1aef79dc8473ad9ad5831c7288b6169021
MD5 7b2e3360c05b4517ce74a2cae8d3ed7e
BLAKE2b-256 68e75aaa576b9d46225da500d5bfa5b939425c0d2b2e76bf4593a67b3350dc7d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page