@@ -371,7 +371,7 @@ class Future(object):
|
|||||||
if exc_tb is not None:
|
if exc_tb is not None:
|
||||||
self._exception_tb = exc_tb
|
self._exception_tb = exc_tb
|
||||||
exc_tb = None
|
exc_tb = None
|
||||||
elif self._loop.get_debug() and not six.PY3:
|
elif not six.PY3:
|
||||||
self._exception_tb = sys.exc_info()[2]
|
self._exception_tb = sys.exc_info()[2]
|
||||||
self._state = _FINISHED
|
self._state = _FINISHED
|
||||||
self._schedule_callbacks()
|
self._schedule_callbacks()
|
||||||
|
|||||||
@@ -235,6 +235,7 @@ class Task(futures.Future):
|
|||||||
def _step(self, value=None, exc=None, exc_tb=None):
|
def _step(self, value=None, exc=None, exc_tb=None):
|
||||||
assert not self.done(), \
|
assert not self.done(), \
|
||||||
'_step(): already done: {0!r}, {1!r}, {2!r}'.format(self, value, exc)
|
'_step(): already done: {0!r}, {1!r}, {2!r}'.format(self, value, exc)
|
||||||
|
|
||||||
if self._must_cancel:
|
if self._must_cancel:
|
||||||
if not isinstance(exc, futures.CancelledError):
|
if not isinstance(exc, futures.CancelledError):
|
||||||
exc = futures.CancelledError()
|
exc = futures.CancelledError()
|
||||||
@@ -250,7 +251,10 @@ class Task(futures.Future):
|
|||||||
# Call either coro.throw(exc) or coro.send(value).
|
# Call either coro.throw(exc) or coro.send(value).
|
||||||
try:
|
try:
|
||||||
if exc is not None:
|
if exc is not None:
|
||||||
result = coro.throw(exc)
|
if exc_tb is not None:
|
||||||
|
result = coro.throw(exc, None, exc_tb)
|
||||||
|
else:
|
||||||
|
result = coro.throw(exc)
|
||||||
else:
|
else:
|
||||||
result = coro.send(value)
|
result = coro.send(value)
|
||||||
except StopIteration as exc:
|
except StopIteration as exc:
|
||||||
|
|||||||
Reference in New Issue
Block a user