def __exit__(self, exc_type, exc_value, tb): self._end_time = utc_now() seconds = elapsed_seconds(self._start_time, self._end_time) if exc_type is None: event = STEP_FINISH errors = None logger.info("Finished %s step for '%s' (%0.2fs)", self._step, self._target, seconds) else: event = STEP_FAIL errors = [{ "code": (exc_type.__module__ + "." + exc_type.__qualname__).upper(), "message": traceback.format_exception_only(exc_type, exc_value)[0].strip(), }] logger.warning("Failed %s step for '%s' (%0.2fs)", self._step, self._target, seconds) payload = MonitorPayload(self, event, self._end_time, elapsed=seconds, errors=errors, extra=self._extra) payload.emit(dry_run=self._dry_run)
def marker_payload(cls, step: str): monitor = cls(_DUMMY_TARGET, step) return MonitorPayload(monitor, STEP_FINISH, utc_now(), elapsed=0, extra={"is_marker": True})
def __enter__(self): if self._index: logger.info("Starting %s step for '%s' (%d/%d)", self.step, self.target, self._index["current"], self._index["final"]) else: logger.info("Starting %s step for '%s'", self.step, self.target) self._start_time = utc_now() payload = MonitorPayload(self, STEP_START, self._start_time, extra=self._extra) payload.emit(dry_run=self._dry_run) return self