On 20.12.2015 01:26, Kevin Conway wrote:
> async def coroutine():
>     try:
>         await Awaitable()
>         await Awaitable()
>     finally:
>         print('finally')
Try adding another "await Awaitable()" after the "finally:".

I have to take back my "doesn't print an error" comment, however;
there's another reference to the Condition.wait() generator (the task
asyncio.wait() creates to wrap the generator in), and the "Task was
destroyed but it is pending!" message got delayed sufficiently that I
missed it. (Dying test cases tend to spew many of these.)

Testcase:

    import asyncio
    import gc
    cond = asyncio.Condition()
    loop = asyncio.get_event_loop()

    async def main():
        async with cond:
            # asyncio.wait() does this, if we don't
            w = asyncio.ensure_future(cond.wait())
            await asyncio.wait([w],timeout=1)
            print(gc.get_referrers(w))
    loop.run_until_complete(main())

Time to refactor my code to do the wait/timeout outside the "async with
cond".

-- 
-- Matthias Urlichs

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to