Quoting Alberto Berdi from python-tulip mailing list: working with the Python 3.6 asyncio implemented in C, i've got what is for me a strange behavior of the asyncio.Task.current task function. Executing the following test: import asyncio async def coro(): print(asyncio.Task.current_task()) print(asyncio.Task.current_task(None)) print(asyncio.Task.current_task(loop=asyncio.get_event_loop())) loop = asyncio.get_event_loop() loop.run_until_complete(coro()) in Py3.5, I obtain the result: <Task pending coro=<coro() running at test_task.py:4> cb=[_run_until_complete_cb() at /usr/lib/python3.5/asyncio/base_events.py:176]> <Task pending coro=<coro() running at test_task.py:5> cb=[_run_until_complete_cb() at /usr/lib/python3.5/asyncio/base_events.py:176]> <Task pending coro=<coro() running at test_task.py:6> cb=[_run_until_complete_cb() at /usr/lib/python3.5/asyncio/base_events.py:176]> In Py3.6, i get: <Task pending coro=<coro() running at test_task.py:4> cb=[_run_until_complete_cb() at /usr/lib/python3.6/asyncio/base_events.py:176]> None <Task pending coro=<coro() running at test_task.py:6> cb=[_run_until_complete_cb() at /usr/lib/python3.6/asyncio/base_events.py:176]> What's going on here? It's still right to expect the same result from the three calls or something has changed? The documentation for the Task.current_task() function seems unchanged between the two version. My python3.6 has version: $ python3.6 -VV Python 3.6.0 (default, Dec 29 2016, 04:29:02) [GCC 6.2.1 20161215]
FWIW, the problem afflicts other functions, for example the following script exhibits a similar difference: import asyncio async def coro(): print(asyncio.Task.all_tasks()) print(asyncio.Task.all_tasks(None)) loop = asyncio.get_event_loop() loop.run_until_complete(coro())