в ините таким способом
if self.router
add_metrics(router, self)
вот класс routera https://pastebin.com/3VdVhsPM, а функции будут типо таких на замыканиях
def add_keitaro_http_metrics(router, http_client):
def keitaro_response_count_by_status_code_handler(status_code):
keitaro_response_count_by_status_code.inc({'status': status_code})
def keitaro_response_latency_handler():
http_client.session.request = timer(keitaro_response_latency)(http_client.session.request)
keitaro_response_count_by_status_code = router.add_metric('Gauge', 'keitaro_response_count_by_status_code', '-')
keitaro_response_latency = router.add_metric('Gauge', 'keitaro_response_latency', '-')
http_client.keitaro_response_count_by_status_code = keitaro_response_count_by_status_code_handler
http_client.keitaro_response_latency = keitaro_response_latency_handler
Насколько нормальная такая архитектура , как можно ее улучшить?
add_metrics что добавляет в роутер?
новую метрику добавляет . Метрики основаны на глобалах в этой либе
в остальном нормально сделано? просто иде ругается постоянно когда я использую неявно добавленные атрибуты
Что потом http_client с этими атрибутами делать должен? и как реагировать, что они то есть, то нет?
Обсуждают сегодня