def log_step(self, progress): from eventkit_cloud.tasks.helpers import update_progress self.eta.update(progress.progress) # This may also get called by update_progress but because update_progress # is rate-limited; we also do it here to get more data points for making # better eta estimates if self.task_uid: if self.log_step_counter == 0: if ( get_cache_value(uid=self.task_uid, attribute="status", model_name="ExportTaskRecord") == TaskState.CANCELED.value ): logger.error(f"The task uid: {self.task_uid} was canceled. Exiting...") raise Exception("The task was canceled.") update_progress(self.task_uid, progress=progress.progress * 100, eta=self.eta) self.log_step_counter = self.log_step_step self.log_step_counter -= 1 # Old version of super.log_step that includes ETA string # https://github.com/mapproxy/mapproxy/commit/93bc53a01318cd63facdb4ee13968caa847a5c17 if not self.verbose: return if (self._laststep + self.interval) < time.time(): logger.info( f"[{timestamp()}] {progress.progress * 100:6.2f}%\t{progress.progress_str.ljust(20)} ETA: {self.eta}\r" ) # [12:24:08] 100.00% 000000 ETA: 2020-08-06-12:22:30-UTC self._laststep = time.time()
def custom_exp_backoff(*args, **kwargs): if max_repeat: kwargs["max_repeat"] = max_repeat if get_cache_value(uid=task_uid, attribute="status", model_name="ExportTaskRecord") == TaskState.CANCELED.value: logger.error(f"The task uid: {task_uid} was canceled. Exiting...") raise Exception("The task was canceled.") exp_backoff(*args, **kwargs)
def test_get_cache_value(self, mock_cache, mock_get_cache_key): expected_value = "some_value" uid = 'test_uid' attribute = 'progress' model_name = 'ExportTaskRecord' default = 0 etr = ExportTaskRecord(uid=uid) cache_key = "{}.{}.{}".format('ExportTaskRecord', uid, attribute) mock_get_cache_key.return_value = cache_key mock_cache.get.return_value = expected_value cached_value = get_cache_value(obj=etr, attribute=attribute, uid=uid, model_name=model_name, default=0) self.assertEquals(expected_value, cached_value) mock_get_cache_key.assert_called_once_with(obj=etr, attribute=attribute, uid=uid, model_name=model_name) mock_cache.get.assert_called_once_with(cache_key, default)
def test_get_cache_value(self, mock_cache, mock_get_cache_key): expected_value = "some_value" uid = "test_uid" attribute = "progress" model_name = "ExportTaskRecord" default = 0 etr = ExportTaskRecord(uid=uid) cache_key = "{}.{}.{}".format("ExportTaskRecord", uid, attribute) mock_get_cache_key.return_value = cache_key mock_cache.get.return_value = expected_value cached_value = get_cache_value(obj=etr, attribute=attribute, uid=uid, model_name=model_name, default=0) self.assertEquals(expected_value, cached_value) mock_get_cache_key.assert_called_once_with(obj=etr, attribute=attribute, uid=uid, model_name=model_name) mock_cache.get.assert_called_once_with(cache_key, default)
def estimated_finish(self): if TaskStates[self.status] in TaskStates.get_finished_states(): return return get_cache_value(obj=self, attribute="estimated_finish", default=0)
def progress(self): if TaskStates[self.status] in TaskStates.get_finished_states(): return 100 return get_cache_value(obj=self, attribute="progress", default=0)
def status(self): return get_cache_value(obj=self, attribute="status", default="")
def message(self): return get_cache_value(obj=self, attribute="message", default="")