以字符串形式获取 aiohttp 结果

约里安

我正在尝试使用 python 中的异步从网站获取数据。作为示例,我使用了此代码(在 A Better Coroutine Example 下):https ://www.blog.pythonlibrary.org/2016/07/26/python-3-an-intro-to-asyncio/

现在这工作正常,但它将二进制块写入文件,我不希望它在文件中。我想要直接得到的数据。但是我目前有一个协程对象列表,我无法从中获取数据。

编码:

# -*- coding: utf-8 -*-
import aiohttp
import asyncio
import async_timeout

async def fetch(session, url):
    with async_timeout.timeout(10):
        async with session.get(url) as response:
            return await response.text()


async def main(loop, urls):
    async with aiohttp.ClientSession(loop=loop) as session:
        tasks = [fetch(session, url) for url in urls]
        await asyncio.gather(*tasks)
        return tasks

# time normal way of retrieval
if __name__ == '__main__':
    urls = [a list of urls..]

    loop = asyncio.get_event_loop()
    details_async = loop.run_until_complete(main(loop, urls))

谢谢

用户4815162342

问题出return tasks在 的末尾main(),原始文章中没有。asyncio.gather您应该返回由 返回的元组,而不是返回协程对象(一旦传递到 就没有用asyncio.gather,它包含以正确顺序运行协程的结果。例如:

async def main(loop, urls):
    async with aiohttp.ClientSession(loop=loop) as session:
        tasks = [fetch(session, url) for url in urls]
        results = await asyncio.gather(*tasks)
        return results

现在loop.run_until_complete(main(loop, urls))将返回与 URL 相同顺序的文本元组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel以字符串形式获取单列结果

来自分类Dev

如何以字符串的形式获取alert()上的concat结果

来自分类Dev

从结果字符串获取特定值

来自分类Dev

jQuery逻辑从字符串获取结果

来自分类Dev

urllib和aiohttp之间的结果不同

来自分类Dev

从Scala中的字符串获取字符,但将结果保留为字符串?

来自分类Dev

从Scala中的字符串获取字符,但将结果保留为字符串?

来自分类Dev

如何从字符串获取临时表结果?

来自分类Dev

获取AFNetworking响应的结果作为JSON字符串数组

来自分类Dev

如何从mysql编码的字符串中获取相关结果

来自分类Dev

获取元素节点等于字符串的xml结果

来自分类Dev

从Linq查询结果中获取字符串

来自分类Dev

如何获取结果集的字符串值

来自分类Dev

如何在 URL 中传递字符串以获取结果

来自分类Dev

字符串的奇怪结果

来自分类Dev

通过使用字符串形式的非负整数,sparql中结果的升序

来自分类Dev

字符串形成字符串的结果不同

来自分类Dev

如何修剪结果字符串值?

来自分类Dev

SQLITE选择结果成字符串

来自分类Dev

search()的结果作为字符串

来自分类Dev

SQL结果集中的字符串处理

来自分类Dev

分割字符串并转置结果

来自分类Dev

getElementById给出结果和字符串

来自分类Dev

Android HttpUrlConnection结果字符串被截断

来自分类Dev

重击字符串替换命令结果

来自分类Dev

字符串比较时结果错误

来自分类Dev

字符串乘以数字的奇怪结果

来自分类Dev

相似的字符串,不同的结果

来自分类Dev

返回结果,带连接字符串