The scheduler that nobody wants but every application needs.
Project description
Esmerald Datadog
🚀 ASGI integration with TimingASGIMiddleware for Esmerald . 🚀
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
- Python 3.7 +
- Esmerald
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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ae091bb1bd020db71b0686c5dbda0f8f48a9d4c314852324f35883f117f3a2c4 |
|
MD5 | 97f28c50d9a1e1baf4d61f5d0d5fa19b |
|
BLAKE2b-256 | 876e0f4af35ca5f4f2957d592a1a15f8092740a4a803aa6ec45ac61dee8400a3 |
File details
Details for the file esmerald_timing-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: esmerald_timing-0.1.0-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2a0fd7fbbe492d7e7fd5d817865cf6743307dbbe808a686e242eae1b4d1a8d7 |
|
MD5 | 0ef371143f0e78503109f4c41878a63b |
|
BLAKE2b-256 | 24beff7b4244b8d5ddfb947fe8db04f459c2e25271d63138c0bcb5666ba95626 |