我需要从异步调用中收集结果并将它们返回给一个普通函数——连接异步和同步代码部分让我很困惑。在
先试试丑八怪。在
import asyncio
import aiohttp
async def one_call(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
txt = await response.text()
return txt[0:20]
async def do_all(result_inout):
urls = ["https://cnn.com", "https://nyt.com", "http://reuters.com"]
out = await asyncio.gather(*[one_call(url) for url in urls])
result_inout += out
if __name__ == "__main__":
result_inout = []
asyncio.run(do_all(result_inout))
print(result_inout)
第二次尝试,但是直接使用事件循环,它是应用程序代码的discouraged。在
^{pr2}$最好的办法是什么?在
不需要
result_inout
,只需使用out = asyncio.run(do_all())
来获得do_all
的return res
。在输出将是
[0, 0, 0]
。在相关问题 更多 >
编程相关推荐