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.

Reply via email to