R/observer.R

Defines functions register_tracking_event register_external_observer

Documented in register_external_observer

#' Register an external MLflow observer
#'
#' Registers an external MLflow observer that will receive a
#' `register_tracking_event(event_name, data)` callback on any model tracking
#' event such as "create_run", "delete_run", or "log_metric".
#' Each observer should have a `register_tracking_event(event_name, data)`
#' callback accepting a character vector `event_name` specifying the name of
#' the tracking event, and `data` containing a list of attributes of the event.
#' The callback should be non-blocking, and ideally should complete
#'  instantaneously. Any exception thrown from the callback will be ignored.
#'
#' @param observer The observer object (see example)
#' @export
register_external_observer <- function(observer) {
  observers <- getOption("MLflowObservers")
  observers <- append(observers, list(observer))
  options(MLflowObservers = observers)
}

# If one or more external observer(s) are present, then inform them of the
# event. Otherwise do nothing.
register_tracking_event <- function(event_name, data) {
  observers <- getOption("MLflowObservers")
  if (length(observers) > 0) {
    lapply(
      observers,
      function(o) {
        tryCatch(
          o$register_tracking_event(event_name, data),
          error = function(e) { }
        )
      }
    )
  }
}
mrkaye97/lightMLFlow documentation built on Dec. 28, 2021, 12:15 a.m.