title: Python asyncio recursion with call_later
body: <p>I am trying to create a simple monitoring system that periodically checks things and logs them. Here is a cutdown example of the logic I am attempting to use but I keep getting a <code>RuntimeWarning: coroutine 'foo' was never awaited</code> error. </p>
  
  <p>How should I reschedule an async method from itself? </p>
  
  <p>Code in test.py:</p>
  
  <pre><code>import asyncio
  from datetime import datetime
  
  async def collect_data():
      await asyncio.sleep(1)
      return {"some_data": 1,}
  
  async def foo(loop):
      results = await collect_data()
      # Log the results
      print("{}: {}".format(datetime.now(), results))
      # schedule to run again in X seconds
      loop.call_later(5, foo, loop)
  
  if __name__ == '__main__':
  
      loop = asyncio.get_event_loop()
      loop.create_task(foo(loop))
      loop.run_forever()
      loop.close()
  </code></pre>
  
  <p>Error:</p>
  
  <pre><code>pi@raspberrypi [0] $ python test.py 
  2018-01-03 01:59:22.924871: {'some_data': 1}
  /usr/lib/python3.5/asyncio/events.py:126: RuntimeWarning: coroutine 'foo' was never awaited
    self._callback(*self._args)
  </code></pre>