Gauge
Contents
Gauge#
O tipo Gauge é usado para acompanhar a “velocidde instantânea” de uma métrica, ou seja, seu valor atual. Esse valor pode variar tanto pra cima como pra baixo.
É útil também para acompanhar duração de execução de tarefas.
Interface principal#
A interface principal são os métodos inc()
, dec()
e set()
.
from asyncworker.metrics import Gauge
g = Gauge("temperatura_atual", "Mostra a temperatura atual do sensor")
g.inc() # Incrementa o valor em 1
g.dec(20) # Decrementa o valor em 20
g.set(8.9) # Força o valor a ser 8.9
Interfaces adicionais#
Algumas interfaces adicionais também são expostas para facilitar o uso, são elas:
track_inprogress()#
Essa interface serve para já incrementar e decrementar de forma automática. Pode ser usada como um decorator ou como context manager. Útil para controlar contagens que só fazem sentido durante a execução de algum código.
from asyncworker.metrics import Gauge
g = Gauge("envio_de_emails_em_andamento", "Quantidade de emails sendo enviados")
@g.track_inprogress()
def envia_email(...)
pass
Nesse caso a métrica será incrementada quando a função envia_email()
for chamada e decrementada quando a função terminar de rodar.
from asyncworker.metrics import Gauge
g = Gauge("queries_em_andamento", "Quantidade de queries sendo feitas")
with g.track_inprogress():
await db.query(...)
Nesse caso a métrica será incrementada no início do context e decrementada quando o context terminar.
time()#
Essa interface é útil para contar tempo, duração de alguma coisa.
from asyncworker.metrics import Gauge
g = Gauge("query_duration", "Duração das queries no banco")
@g.time()
def run_query(...)
pass
with g.time();
run_query(...)
Nesses dois exemplos a métrica query_duration
marcará o tempo de execução da função run_query()
.