Счетчик попыток в retry-loop
Как считать attempts в retry-декораторе так, чтобы логи и метрики не искажали реальное число вызовов?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Attempt нужно увеличивать перед каждой реальной попыткой вызова, логировать номер попытки, исключение и итоговый статус отдельно от общего числа retry.
Полный разбор
В retry-loop полезно различать initial attempt и retries. Счетчик должен соответствовать фактическим вызовам функции: перед call фиксируется attempt number, после exception пишутся тип ошибки, elapsed time, delay до следующей попытки и решение retry/stop.
Метрики лучше разделить: attempts_total, retries_total, failures_after_retries, success_after_retry и latency. Тогда retry не маскирует нестабильность зависимости: успешный итог после трех попыток все равно виден как degraded behavior.