Hello everyone,
here is super simple example of one case i ran into:
import asyncio
loop = asyncio.get_event_loop()
async def task():
print('i am task..')
myself.set_exception(RuntimeError('something bad'))
print('i keep working')
myself = loop.create_task(task())
loop.run_forever()
which will produce something strange,
i expected to see just a RuntimeError propagated.
but instead, here is what is happening:
i am task..
> i keep working
> Exception in callback Task._step()
> handle: <Handle Task._step()>
> Traceback (most recent call last):
> File "/home/http/Python-3.5.0/lib/python3.5/asyncio/tasks.py", line 239,
> in _step
> result = coro.send(value)
> StopIteration
>
> During handling of the above exception, another exception occurred:
>
> Traceback (most recent call last):
> File "/home/http/Python-3.5.0/lib/python3.5/asyncio/events.py", line
> 125, in _run
> self._callback(*self._args)
> File "/home/http/Python-3.5.0/lib/python3.5/asyncio/tasks.py", line 241,
> in _step
> self.set_result(exc.value)
> File "/home/http/Python-3.5.0/lib/python3.5/asyncio/futures.py", line
> 335, in set_result
> raise InvalidStateError('{}: {!r}'.format(self._state, self))
> asyncio.futures.InvalidStateError: FINISHED: <Task finished coro=<task()
> done, defined at test_aio_exception.py:4> exception=RuntimeError('something
> bad',)>
>
i am sorry in advance if it is just something i don't understand at very
basic level about asyncio.
Regards,
Oleg.