title: Running two Async Functions where one returns data and another returns Nothing using Asyncio
body: <p>Lets say I have some tasks I want to run asynchronously.</p>
  <p>I want to make a series of 4 API calls asynchronously, but I also would like to have another asynchronous function checking on status of my session.</p>
  <p>Using <code>asyncio</code> I have tried:</p>
  <pre><code>import aiohttp
  import asyncio
  async def make_request():
      async with aiohttp.ClientSession() as session:
          async with session.get('http://httpbin.org/get') as resp:
              print(resp.status)
              print(await resp.text())
  
      return resp
  
  async def say_hello():
      print(&quot;Hello&quot;)
  
  async def main():
  
      tasks = []
      for i in range(4):
          tasks.append(asyncio.create_task(make_request()))
  
      results = await asyncio.gather(*tasks, say_hello(),)
      
  if __name__ == &quot;__main__&quot;:
      event_loop = asyncio.get_event_loop()
      event_loop.run_until_complete(main())
  </code></pre>
  <p>In reality, my <code>say_hello()</code> is checking a status and updating a class attribute (the session) while making requests according to a set time frequency. How could I accomplish this &quot;status&quot; function running alongside my actual API calls execution in <code>make_request()</code> which return a response object which I later process when finished.</p>