Шаг 5 из 6

Создаём Handler-класс

Идея заключается в том, чтобы добавить дополнительный обработчик (Handler) для логера airflow.task, который будет "ловить" сообщения (Log Record) уровня ERROR и посылать их в телеграм через телеграм-бота. Для работы с телеграмом я использую библиотеку pyTelegramBotAPI.

from logging import Handler, LogRecord

import telebot

class TelegramBotHandler(Handler):
    def __init__(self, token: str, chat_id: str):
        super().__init__()
        self.token = token
        self.chat_id = chat_id

    def emit(self, record: LogRecord):
        bot = telebot.TeleBot(self.token)
        bot.send_message(
            self.chat_id,
            self.format(record)
        )

Такой же пример обработчика я описывал в статье про logging. Предварительно вам нужно создать телеграм-бота, используя бота BotFather. Если вы раньше никогда не работали с телеграм-ботами, то почитайте мою статью про создание телеграм-ботов на python.

Комментарии