You are not appending to the list that's being iterated ;)

tasks is an async generator or possibly a custom object that overrides
aiter, anext, etc.

I'd say look at internals of aiostream's merge, it should not be too hard
to extend perhaps
On Wed, 18 Jul 2018 at 9:01 PM, James Stidard <jamesstid...@gmail.com>
wrote:

> 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
>
>
> _______________________________________________
> Async-sig mailing list
> Async-sig@python.org
> https://mail.python.org/mailman/listinfo/async-sig
> Code of Conduct: https://www.python.org/psf/codeofconduct/
>
_______________________________________________
Async-sig mailing list
Async-sig@python.org
https://mail.python.org/mailman/listinfo/async-sig
Code of Conduct: https://www.python.org/psf/codeofconduct/

Reply via email to