Atualizando para 0.19.0#

Changelog: 0.19.0

Nessa versão, corrigimos um comportamento indesejado nas métricas relacionadas a rotas HTTP.

Um handler dinâmico declarado assim:

from aiohttp import web

from asyncworker import App
from asyncworker.decorators import parse_path

app = App()

@app.http.get(["/person/{_id}"])
@parse_path
async def get_person_by_id(_id: int):
    person = {"id": _id}
    return web.json_response(person)

Ao receber chamadas como /person/1, /person/2, /person/3, métricas eram contabilizadas considerados como paths /person/1, /person/2 e /person/3, fazendo com que não tivéssemos controle sobre a quantidade de métricas exportadas, o que é uma má prática.

A partir dessa versão, as métricas HTTP expostas em rotas dinâmicas exportam path igual a rota definida pelo usuário (nesse caso, /person/{_id}), garantindo uma cardinalidade previsível.

increase(asyncworker_http_request_duration_ms_count{path=~"(/person/1|/person/2|/person/3)"}[1m])

Deve ser substituído por:

increase(asyncworker_http_request_duration_ms_count{path=~"/person/{_id}"}[1m])