Skip to main content

The scheduler that nobody wants but every application needs.

Project description

Esmerald Datadog

Esmerald

🚀 ASGI integration with TimingASGIMiddleware for Esmerald . 🚀

Test Suite Package version Supported Python versions


Esmerald Documentation: https://esmerald.dymmond.com 📚

Esmerald Source Code: https://github.com/dymmond/esmerald


Motivation

This is an Esmerald integration to use the TimingMiddleware.

TimingMiddleware for ASGI is useful for automatic instrumentation of ASGI endpoints.

This package is an extension allowing the integration with Esmerald.

Requirements

Usage

import uvicorn
from esmerald_timing.integrations import EsmeraldScopeToName
from timing_asgi import TimingClient, TimingMiddleware

from esmerald import Gateway, Request, get
from esmerald.applications import Esmerald
from esmerald.responses import PlainTextResponse


class PrintTimings(TimingClient):
    def timing(self, metric_name, timing, tags):
        print(metric_name, timing, tags)


@get("/")
def homepage(request: Request) -> PlainTextResponse:
    return PlainTextResponse("Welcome to Esmerald!")


app = Esmerald(routes=[Gateway(handler=homepage)])

app.add_middleware(
    TimingMiddleware,
    client=PrintTimings(),
    metric_namer=EsmeraldScopeToName(prefix="myapp", esmerald_app=app),
)

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

Running this example and sending some requests:

$ python app.py
INFO:     Started server process [18769]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     127.0.0.1:58132 - "GET / HTTP/1.1" 200 OK
myapp.__main__.homepage 0.0009038448333740234 ['http_status:200', 'http_method:GET', 'time:wall']
myapp.__main__.homepage 0.0008970000000000367 ['http_status:200', 'http_method:GET', 'time:cpu']
myapp.favicon.ico 0.0006134510040283203 ['http_status:404', 'http_method:GET', 'time:wall']
myapp.favicon.ico 0.0006120000000000569 ['http_status:404', 'http_method:GET', 'time:cpu']
INFO:     127.0.0.1:58132 - "GET / HTTP/1.1" 200 OK
myapp.__main__.homepage 0.000881195068359375 ['http_status:200', 'http_method:GET', 'time:wall']
myapp.__main__.homepage 0.0008829999999999671 ['http_status:200', 'http_method:GET', 'time:cpu']
INFO:     127.0.0.1:58132 - "GET / HTTP/1.1" 200 OK
myapp.__main__.homepage 0.0014600753784179688 ['http_status:200', 'http_method:GET', 'time:wall']
myapp.__main__.homepage 0.0014729999999998356 ['http_status:200', 'http_method:GET', 'time:cpu']

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

esmerald_timing-0.1.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

esmerald_timing-0.1.0-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file esmerald_timing-0.1.0.tar.gz.

File metadata

  • Download URL: esmerald_timing-0.1.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.15

File hashes

Hashes for esmerald_timing-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ae091bb1bd020db71b0686c5dbda0f8f48a9d4c314852324f35883f117f3a2c4
MD5 97f28c50d9a1e1baf4d61f5d0d5fa19b
BLAKE2b-256 876e0f4af35ca5f4f2957d592a1a15f8092740a4a803aa6ec45ac61dee8400a3

See more details on using hashes here.

File details

Details for the file esmerald_timing-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for esmerald_timing-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2a0fd7fbbe492d7e7fd5d817865cf6743307dbbe808a686e242eae1b4d1a8d7
MD5 0ef371143f0e78503109f4c41878a63b
BLAKE2b-256 24beff7b4244b8d5ddfb947fe8db04f459c2e25271d63138c0bcb5666ba95626

See more details on using hashes here.

Supported by

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