![](https://secure.gravatar.com/avatar/b4cdc19f4b766d577b9804e2a45a2cf5.jpg?s=120&d=mm&r=g)
Hi, I was wondering if anyone has had experience implementing a similar pattern to this or has alternative suggestions of how to achieve it. I have a bunch of async generators which I’d like to be able to merge into a single async generator I can iterate over. I found Vincent’s aiostream library which gives me this without too much effort: from asyncio import sleep, run from aiostream.stream import merge async def go(): yield 0 await sleep(1) yield 50 await sleep(1) yield 100 async def main(): tasks = merge(go(), go(), go()) async for v in tasks: print(v) if __name__ == '__main__': run(main()) However, I also would like to be able to add additional tasks into the list once I’ve started iterating the list so something more akin to: from asyncio import sleep, run from aiostream.stream import merge async def go(): yield 0 await sleep(1) yield 50 await sleep(1) yield 100 async def main(): tasks = merge(go(), go(), go()) async for v in tasks: If v == 50: tasks.merge(go()) print(v) if __name__ == '__main__': run(main()) Has anyone been able to achieve something like this? p.s. I know appending to a list you’re iterating is bad practice, I assume the same would be true modifying this stream object, but think the example illustrates what I’m trying to achieve. Thanks, James