python async wait 无法返回元组

Yor*_*ian 0 python async-await python-asyncio aiohttp

我想创建一个从网站异步下载的功能。我需要将下载结果连接到输入参数,以便我可以在下载后使用结果和参数。

我目前有以下内容:

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))
Run Code Online (Sandbox Code Playgroud)

然而这会返回一个错误:

TypeError: object tuple can't be used in 'await' expression
Run Code Online (Sandbox Code Playgroud)

如何将一些输入数据(例如网址)加入到结果中,以便我可以使用它进行进一步分析?

Yor*_*ian 5

解决了它:

return (await response.read(), url, x, y)
Run Code Online (Sandbox Code Playgroud)