Step 2 of 6

Event Handlers

В Luigi есть список событий на которые можно повесить свою callback-функцию:

# находится в luigi.event

class Event(object):
    DEPENDENCY_DISCOVERED = "event.core.dependency.discovered"  # triggered for every (task, upstream task) pair discovered in a jobflow
    DEPENDENCY_MISSING = "event.core.dependency.missing"
    DEPENDENCY_PRESENT = "event.core.dependency.present"
    BROKEN_TASK = "event.core.task.broken"
    START = "event.core.start"
    PROGRESS = "event.core.progress"
    FAILURE = "event.core.failure"
    SUCCESS = "event.core.success"
    PROCESSING_TIME = "event.core.processing_time"
    TIMEOUT = "event.core.timeout"  # triggered if a task times out
    PROCESS_FAILURE = "event.core.process_failure"  # triggered if the process a task is running in dies unexpectedly

Конкретно для этого проекта мы рассмотрим Event.FAILURE, это событие возникает, когда задача неудачно завершается. За вызов событий отвечает метод trigger_event в классе Taskhttps://github.com/spotify/luigi/blob/master/luigi/task.py#L266. Функция callback должна принимать 2 обязательных аргументы:

  • инстанс задачи (класса Task)
  • объект исключения

Итак, наша задача:

  • Написать код для работы с Telegram, а именно научиться отправлять сообщения
  • Написать callback функцию, и "подписать" её на событие Event.FAILURE

Comments