@sublime_text3

Как игнорировать asyncio.sleep в асинхронном итераторе?

Я хотел бы спросить как сделать, так чтобы итератор не останавливался на 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()
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы