Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

multiple tasks using python asyncio

I have the following code:

import asyncio

async def test_1():      
    res1 = await foo1()
    return res1

async def test_2():      
    res2 = await foo2()
    return res2

if __name__ == '__main__':
    print(asyncio.get_event_loop().run_until_complete([test_1, test_2]))

But the last call to .run_until_complete() is not working. How can I perform an async call to multiple tasks using .run_until_complete()?

like image 441
Federico Caccia Avatar asked Aug 05 '18 16:08

Federico Caccia


Video Answer


1 Answers

I was looking for examples and I found the answer. We can run a simple tasks, which gathers multiple coroutines:

import asyncio    

async def test_1(dummy):
  res1 = await foo1()
  return res1

async def test_2(dummy):
  res2 = await foo2()
  return res2

async def multiple_tasks(dummy):
  input_coroutines = [test_1(dummy), test_2(dummy)]
  res = await asyncio.gather(*input_coroutines, return_exceptions=True)
  return res

if __name__ == '__main__':
  dummy = 0
  res1, res2 = asyncio.get_event_loop().run_until_complete(multiple_tasks(dummy))
like image 81
Federico Caccia Avatar answered Oct 10 '22 09:10

Federico Caccia