import asyncio async def sleep(): await asyncio.sleep(3) print('I should never finish!') return 0 async def work(): i = 0 while i < 50: i += 1 await asyncio.sleep(0.2) return 0 async def explode(): await asyncio.sleep(1.5) a = 1 / 0 return a async def main(): # exploding will bring all other tasks down with it! try: async with asyncio.TaskGroup() as tg: tg.create_task(sleep()) tg.create_task(work()) tg.create_task(explode()) except: pass asyncio.run(main())