From 87031d3c36c2830586054ed706b1a28bd7e5c43f Mon Sep 17 00:00:00 2001 From: Gard Spreemann Date: Sat, 13 Jun 2020 10:23:00 +0200 Subject: Upstream 0.2.8 tarball as released on PyPI. --- cdsapi/api.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'cdsapi/api.py') diff --git a/cdsapi/api.py b/cdsapi/api.py index 1c8e598..70efa25 100644 --- a/cdsapi/api.py +++ b/cdsapi/api.py @@ -192,6 +192,16 @@ class Result(object): self.debug(metadata.headers) return metadata + def update(self, request_id=None): + if request_id is None: + request_id = self.reply['request_id'] + task_url = '%s/tasks/%s' % (self._url, request_id) + self.debug("GET %s", task_url) + + result = self.robust(self.session.get)(task_url, verify=self.verify) + result.raise_for_status() + self.reply = result.json() + def delete(self): if self._deleted: @@ -238,6 +248,7 @@ class Client(object): delete=True, retry_max=500, sleep_max=120, + wait_until_complete=True, info_callback=None, warning_callback=None, error_callback=None, @@ -287,6 +298,7 @@ class Client(object): self.full_stack = full_stack self.delete = delete self.last_state = None + self.wait_until_complete = wait_until_complete self.debug_callback = debug_callback self.warning_callback = warning_callback @@ -329,11 +341,11 @@ class Client(object): result = self._api('%s/tasks/services/%s/clientid-%s' % (self.url, name, uuid.uuid4().hex), request, 'PUT') return result - def workflow(self, code, *args, **kwargs): + def workflow(self, code, *args, workflow_name='application', **kwargs): params = dict(code=code, args=args, kwargs=kwargs, - workflow_name='application') + workflow_name=workflow_name) return self.service("tool.toolbox.orchestrator.run_workflow", params) def status(self, context=None): @@ -411,6 +423,9 @@ class Client(object): else: raise + if not self.wait_until_complete: + return Result(self, reply) + sleep = 1 while True: @@ -548,7 +563,7 @@ class Client(object): while tries < self.retry_max: try: r = call(*args, **kwargs) - except requests.exceptions.ConnectionError as e: + except (requests.exceptions.ConnectionError, requests.exceptions.ReadTimeout) as e: r = None self.warning("Recovering from connection error [%s], attemps %s of %s", e, tries, self.retry_max) -- cgit v1.2.3