Как использовать асинхронный генератор в Python 3.6?

1

Мне нужно обработать несколько страниц данных с сервера. Я хотел бы создать генератор для этого вот так. К сожалению, я получаю TypeError: 'async_generator' object is not iterable

async def get_data():
    i = 0
    while i < 3:
        i += 1
        data = await http_call()  # call to http-server here
        yield data

data = [i for i in get_data()]  # inside a loop

Следующий вариант вызывает TypeError: object async_generator can't be used in 'await' expression

data = [i for i in await get_data()]  # inside a loop
Теги:
python-3.x
generator
async-await

2 ответа

1
Лучший ответ

Используйте async for вашего понимания. См. PEP 530 - Асинхронное понимание

data = [i async for i in get_data()]

В зависимости от того, какую версию Python вы используете, это может быть доступно только в функциях async def.

  • 0
    Обратите внимание, что это не будет делать асинхронные вызовы для всех страниц.
  • 0
    @Aaron_ab Что ты имеешь в виду?
Показать ещё 1 комментарий
0

Вы должны использовать функцию eventloop и функцию сбора

Ещё вопросы

Сообщество Overcoder
Наверх
Меню