Вход в библиотеку с асинхронным API - PullRequest
0 голосов
/ 10 декабря 2018

Мы создаем библиотеку для периодического представления данных в базу данных временных рядов.По сути, вы создаете объект нашего класса Reporter и регистрируете в нем несколько метрик.Репортер имеет внутренний поток, который периодически просыпается и отправляет данные в бэкэнд.

registry = MetricsRegistry()
reporter = Reporter(registry, reporting_interval=5)
reporter.start()
cpu_gauge = registry.gauge("node.cpu")
cpu_gauge.set_value(60)
time.sleep(6)
# when we wake up the data must have been sent

...

Обычно, если API репортера для создания отчетов был синхронным и открытым, мы помещали бы вызов отчета в блок try/except и регистрировали любые исключения.Например:

try:
    reporter.report_now()
except Exception as e:
    self.logger.error("Reporter failed", e)

Однако в этом случае отчетность происходит в фоновом потоке.Чтобы регистрировать возникающие исключения, нужно ли просить пользователя библиотеки передать ссылку на регистратор при создании репортера?Это не внутренняя библиотека, а то, что наши клиенты будут использовать, поэтому я хочу ознакомиться с общими рекомендациями, применяемыми в мире Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...