def _wait_for_job(self, timeout=60, wait=5): """Wait until all online ran circuits of a qobj are 'COMPLETED'. Args: timeout (float or None): seconds to wait for job. If None, wait indefinitely. wait (float): seconds between queries Returns: dict: A dict with the contents of the API request. Raises: JobTimeoutError: if the job does not return results before a specified timeout. JobError: if something wrong happened in some of the server API calls """ start_time = time.time() while self.status() not in JOB_FINAL_STATES: elapsed_time = time.time() - start_time if timeout is not None and elapsed_time >= timeout: raise JobTimeoutError( 'Timeout while waiting for the job: {}'.format(self._job_id) ) logger.info('status = %s (%d seconds)', self._status, elapsed_time) time.sleep(wait) if self._cancelled: raise JobError( 'Job result impossible to retrieve. The job was cancelled.') return self._api.get_job(self._job_id)
def _wait_for_job(self, timeout=60, wait=5): """Wait until all online ran circuits of a qobj are 'COMPLETED'. Args: timeout (float or None): seconds to wait for job. If None, wait indefinitely. wait (float): seconds between queries Returns: Result: A result object. Raises: JobTimeoutError: if the job does not return results before a specified timeout. JobError: if something wrong happened in some of the server API calls """ start_time = time.time() while self.status() not in JOB_FINAL_STATES: elapsed_time = time.time() - start_time if timeout is not None and elapsed_time >= timeout: raise JobTimeoutError( 'Timeout while waiting for the job: {}'.format(self._id)) logger.info('status = %s (%d seconds)', self._status, elapsed_time) time.sleep(wait) if self._cancelled: return Result({ 'id': self._id, 'status': 'CANCELLED', 'result': 'job cancelled' }) job_data = self._api.get_job(self._id) job_result_list = [] for circuit_result in job_data['qasms']: this_result = { 'data': circuit_result['data'], 'name': circuit_result.get('name'), 'compiled_circuit_qasm': circuit_result.get('qasm'), 'status': circuit_result['status'] } if 'metadata' in circuit_result: this_result['metadata'] = circuit_result['metadata'] job_result_list.append(this_result) return Result({ 'id': self._id, 'status': job_data['status'], 'used_credits': job_data.get('usedCredits'), 'result': job_result_list, 'backend_name': self.backend_name })
def _wait_for_submission(self, timeout=60): """Waits for the request to return a job ID""" if self._id is None: if self._future is None: raise JobError( "You have to submit before asking for status or results!") try: submit_info = self._future.result(timeout=timeout) except TimeoutError as ex: raise JobTimeoutError( "Timeout waiting for the job being submitted: {}".format( ex)) if 'error' in submit_info: self._status = JobStatus.ERROR self._api_error_msg = str(submit_info['error']) raise JobError(str(submit_info['error']))
def _wait_for_submission(self, timeout=60): """Waits for the request to return a job ID""" if self._job_id is None: if self._future is None: raise JobError("You have to submit before asking for status or results!") try: submit_info = self._future.result(timeout=timeout) if self._future_captured_exception is not None: # pylint can't see if catch of None type # pylint: disable=raising-bad-type raise self._future_captured_exception except TimeoutError as ex: raise JobTimeoutError( "Timeout waiting for the job being submitted: {}".format(ex) ) if 'error' in submit_info: self._status = JobStatus.ERROR self._api_error_msg = str(submit_info['error']) raise JobError(str(submit_info['error']))