How to interface blocking and non-blocking code with asyncio
About case #2: Blocking code should be at least wrapped with .run_in_executor.
I'm trying to use a coroutine function outside of the event loop. (In this case, I want to call a function in Django that could also be used inside the event loop too)
There doesn't seem to be a way to do this without making the calling function a coroutine.
I realize that Django is built to be blocking and a therefore incompatible with asyncio. Though I think that this question might help people who are making the transition or using legacy code. 
For that matter, it might help to understand async programming and why it doesn't work with blocking code.