title: Python 3.5 async/await with real code example
body: <p>I've read tons of articles and tutorial about Python's 3.5 async/await thing. I have to say I'm pretty confused, because some use get_event_loop() and run_until_complete(), some use ensure_future(), some use asyncio.wait(), and some use call_soon().</p>
  
  <p>It seems like I have a lot choices, but I have no idea if they are completely identical or there are cases where you use loops and there are cases where you use wait().</p>
  
  <p>But the thing is all examples work with <code>asyncio.sleep()</code> as simulation of real slow operation which returns an awaitable object. Once I try to swap this line for some real code the whole thing fails. What the heck are the differences between approaches written above and how should I run a third-party library which is not ready for async/await. I do use the Quandl service to fetch some stock data.</p>
  
  <pre><code> import asyncio
   import quandl
  
   async def slow_operation(n):
       # await asyncio.sleep(1) # Works because it's await ready.
       await quandl.Dataset(n) # Doesn't work because it's not await ready.
  
  
   async def main():
       await asyncio.wait([
           slow_operation("SIX/US9884981013EUR4"),
           slow_operation("SIX/US88160R1014EUR4"),
       ])
  
   # You don't have to use any code for 50 requests/day.
   quandl.ApiConfig.api_key = "MY_SECRET_CODE"
  
   loop = asyncio.get_event_loop()
   loop.run_until_complete(main())
  </code></pre>
  
  <p>I hope you get the point how lost I feel and how simple thing I would like to have running in parallel.</p>