Python Асинхронное ожидание не может вернуть кортеж - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу создать функцию для асинхронной загрузки с веб-сайта.Мне нужно, чтобы результаты загрузки были присоединены к входным параметрам, чтобы я мог использовать как результаты, так и параметры после загрузки.

В настоящее время у меня есть следующее:

async def download(session, url, var1, var2):
    with async_timeout.timeout(10):
        async with session.get(url) as response:
            return await (response.read(), url, var1, var2)

async def loop_download(loop, urls, var1s, var2s):
    async with aiohttp.ClientSession(loop=loop) as session:
        tasks = [download(session, url, var1, var2) for url, var1, var2 in zip(urls, var1s, var2s)]
        results = await asyncio.gather(*tasks)
        return results

loop = asyncio.get_event_loop()
results = loop.run_until_complete(loop_download(loop, urls, var1s, var2s))

Это, однако, возвращает ошибку:

TypeError: object tuple can't be used in 'await' expression

Как я могу присоединить некоторые входные данные (например, URL) к результатам, чтобы я мог использовать это для дальнейшего анализа?

1 Ответ

0 голосов
/ 18 декабря 2018

Решено с помощью:

return (await response.read(), url, x, y)
...