コード例 #1
0
    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()
コード例 #2
0
 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)
コード例 #3
0
    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)
コード例 #4
0
ファイル: test_tasks.py プロジェクト: zta6/eventkit-cloud
    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)
コード例 #5
0
ファイル: models.py プロジェクト: hydrogeohc/eventkit-cloud
 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)
コード例 #6
0
ファイル: models.py プロジェクト: hydrogeohc/eventkit-cloud
 def progress(self):
     if TaskStates[self.status] in TaskStates.get_finished_states():
         return 100
     return get_cache_value(obj=self, attribute="progress", default=0)
コード例 #7
0
 def status(self):
     return get_cache_value(obj=self, attribute="status", default="")
コード例 #8
0
 def message(self):
     return get_cache_value(obj=self, attribute="message", default="")