Я хотел бы спросить как сделать, так чтобы итератор не останавливался на await asyncio.sleep.
Мой ожидаемый результат:
1
3
ждёт 5 секунд...
2
Реальный результат:
1
ждёт 5 секунд...
2
3
Вот код:
import asyncio
class AsyncIteratorWrapper():
def __init__(self, obj):
self._it = iter(obj)
def __aiter__(self):
return self
async def __anext__(self):
try:
value = next(self._it)
except StopIteration:
raise StopAsyncIteration
return value
async def it(sequence):
async for letter in AsyncIteratorWrapper(sequence):
print(letter)
if letter == 2:
await asyncio.sleep(5) # Игнорировать это
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(asyncio.gather(it([1, 2, 3])))
finally:
loop.close()