Ejemplo n.º 1
0
 def traceback(self, timeout=None):
   until = None if timeout is None else time.time() + timeout
   with self._state.condition:
     while True:
       if self._state.code is None:
         _wait_once_until(self._state.condition, until)
       elif self._state.code is grpc.StatusCode.OK:
         return None
       elif self._state.cancelled:
         raise grpc.FutureCancelledError()
       else:
         try:
           raise self
         except grpc.RpcError:
           return sys.exc_info()[2]
Ejemplo n.º 2
0
 def _block(self, timeout):
     until = None if timeout is None else time.time() + timeout
     with self._condition:
         while True:
             if self._cancelled:
                 raise grpc.FutureCancelledError()
             elif self._matured:
                 return
             else:
                 if until is None:
                     self._condition.wait()
                 else:
                     remaining = until - time.time()
                     if remaining < 0:
                         raise grpc.FutureTimeoutError()
                     else:
                         self._condition.wait(timeout=remaining)
Ejemplo n.º 3
0
    def exception(self, timeout=None):
        """Return the exception raised by the computation.

        See grpc.Future.exception for the full API contract.
        """
        with self._state.condition:
            timed_out = _common.wait(
                self._state.condition.wait, self._is_complete, timeout=timeout)
            if timed_out:
                raise grpc.FutureTimeoutError()
            else:
                if self._state.code is grpc.StatusCode.OK:
                    return None
                elif self._state.cancelled:
                    raise grpc.FutureCancelledError()
                else:
                    return self
Ejemplo n.º 4
0
    def result(self, timeout=None):
        """Returns the result of the computation or raises its exception.

        See grpc.Future.result for the full API contract.
        """
        with self._state.condition:
            timed_out = _common.wait(
                self._state.condition.wait, self._is_complete, timeout=timeout)
            if timed_out:
                raise grpc.FutureTimeoutError()
            else:
                if self._state.code is grpc.StatusCode.OK:
                    return self._state.response
                elif self._state.cancelled:
                    raise grpc.FutureCancelledError()
                else:
                    raise self
Ejemplo n.º 5
0
    def traceback(self, timeout=None):
        """Access the traceback of the exception raised by the computation.

        See grpc.future.traceback for the full API contract.
        """
        with self._state.condition:
            timed_out = _common.wait(
                self._state.condition.wait, self._is_complete, timeout=timeout)
            if timed_out:
                raise grpc.FutureTimeoutError()
            else:
                if self._state.code is grpc.StatusCode.OK:
                    return None
                elif self._state.cancelled:
                    raise grpc.FutureCancelledError()
                else:
                    try:
                        raise self
                    except grpc.RpcError:
                        return sys.exc_info()[2]
 def test_exception_FutureCancelledError():
     error = grpc.FutureCancelledError()
     future = tasklets.Future()
     future.exception = mock.Mock(side_effect=error)
     call = _remote.RemoteCall(future, "testing")
     assert isinstance(call.exception(), exceptions.Cancelled)