Там было много неявной магии, и ребята починили в 3.6, чтобы asyncio.get_event_loop() всегда давал текущий луп. Что позволило не париться о том, чтобы его явно везде передавать, как рекомендовалось делать ранее
I think there's a whole new recommendation for library authors. They should just rely on get_event_loop() except under two circumstances:
- When you need a loop but your loop is not yet running. Note that this should be very rare -- e.g. when you're calling a coroutine function like asyncio.sleep() and passing it to another loop (or to run_until_complete()) you do *not* need the loop because the body of the coroutine doesn't start running until it is first scheduled.
- When run inside an application, framework or test that explicitly sets the global event loop to None. This should only be a backwards compatibility concern at this point: we should recommend that such apps, frameworks and tests switch to allowing get_event_loop(), *unless* they are bound to backward requirement with the stdlib asyncio in Python 3.4 or 3.5.3 (or old asyncio installations on 3.3).
--Guido