[issue28274] asyncio does not call exception handler if task stored

2016-09-25 Thread R. David Murray

R. David Murray added the comment:

In the first case, once the loop has run the task it no longer has a reference 
to it, and it gets GCed.  The __del__ method of the task calls your exception 
handler.  In the second case, you have a reference to it, so __del__ does not 
get called.

If you want the exception to be realized in the second case, you have to yield 
from it somewhere in your program.

--
nosy: +r.david.murray
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue28274] asyncio does not call exception handler if task stored

2016-09-25 Thread Billy Foster

New submission from Billy Foster:

I found a very strange bug in asyncio where whether exception handlers are 
called depends on whether a task is stored.

To illustrate, the following code works as expected, printing out that it made 
it to the exception handler:

import asyncio
async def run():
raise RuntimeError
def exception_handler(loop, context):
print('Made it to exception handler.')
loop = asyncio.get_event_loop()
loop.set_exception_handler(exception_handler)
loop.create_task(run())
loop.run_forever()

However, if you take that exact same code but store the task that is returned 
from create_task, the exception handler will NOT be called:

import asyncio
async def run():
raise RuntimeError
def exception_handler(loop, context):
print('Made it to exception handler.')
loop = asyncio.get_event_loop()
loop.set_exception_handler(exception_handler)
task = loop.create_task(run())
loop.run_forever()

This is completely bizarre, and I have been unable to track down the reason.

--
components: asyncio
messages: 277394
nosy: billyfoster, gvanrossum, yselivanov
priority: normal
severity: normal
status: open
title: asyncio does not call exception handler if task stored
versions: Python 3.5

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com