Skip to main content

Monitoring and analytics for Python API frameworks.

Project description

Python API Analytics

A lightweight API analytics solution, complete with a dashboard.

Getting Started

1. Generate a new API key

Head to https://my-api-analytics.vercel.app/generate to generate your unique API key with a single click. This key is used to monitor your specific API, so keep it secret! It's also required in order to view your APIs analytics dashboard.

2. Add middleware to your API

Add our lightweight middleware to your API. Almost all processing is handled by our servers so there should be virtually no impact on your APIs performance.

pip install api-analytics

Django

Assign your API key to ANALYTICS_API_KEY in settings.py and add the Analytics middleware to the top of your middleware stack.

ANALYTICS_API_KEY = <api_key>

MIDDLEWARE = [
    'api_analytics.django.Analytics',
    ...
]

FastAPI

import uvicorn
from fastapi import FastAPI
from api_analytics.fastapi import Analytics

app = FastAPI()
app.add_middleware(Analytics, <api_key>)  # Add middleware

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

if __name__ == "__main__":
    uvicorn.run("app:app", reload=True)

Flask

from flask import Flask
from api_analytics.flask import add_middleware

app = Flask(__name__)
add_middleware(app, <api_key>)  # Add middleware

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

if __name__ == "__main__":
    app.run()

Tornado

Modify your handler to inherit from Analytics. Create a __init__() method on your handler, passing along the application and response along with your unique API key.

import asyncio
from tornado.web import Application

from api_analytics.tornado import Analytics

# Inherit from the Analytics middleware class
class MainHandler(Analytics):
    def __init__(self, app, res):
        api_key = os.environ.get("API_KEY")
        super().__init__(app, res, api_key)

    def get(self):
        self.write({'message': 'Hello World!'})


def make_app():
    return Application([
        (r"/", MainHandler),
    ])


if __name__ == "__main__":
    app = make_app()
    app.listen(8000)
    IOLoop.instance().start()

3. View your analytics

Your API will log requests on all valid routes. Head over to https://my-api-analytics.vercel.app/dashboard and paste in your API key to view your dashboard.

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-analytics-1.0.18.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

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

api_analytics-1.0.18-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file api-analytics-1.0.18.tar.gz.

File metadata

  • Download URL: api-analytics-1.0.18.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/37.3 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/5.0.0 keyring/23.9.3 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.6

File hashes

Hashes for api-analytics-1.0.18.tar.gz
Algorithm Hash digest
SHA256 fd38bba21a86bd84cc26b567bf929c872a56610e692fa2bad9d54a1ab2331366
MD5 6162bfb0331aa41329df8bdda4a70d0c
BLAKE2b-256 f7ab9dd109fe59f15ab0bc11b0656e64b80f6dd36091e6f652b33bcea272dd63

See more details on using hashes here.

File details

Details for the file api_analytics-1.0.18-py3-none-any.whl.

File metadata

  • Download URL: api_analytics-1.0.18-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/37.3 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/5.0.0 keyring/23.9.3 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.6

File hashes

Hashes for api_analytics-1.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 7032d4c69d63bb612440f756c55261694d1034dff214759acd2091fb52beb248
MD5 d0a3d26eba0400c55946addc45f24bff
BLAKE2b-256 dd35f949152b2e8385a56a7073d0d88f80c17df7a250408fe79ca31e6c45efa3

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