因为Python 3.5引入了async with
在推荐的语法文档的aiohttp
改变。现在,要获得一个网址,他们建议:
import aiohttp
import asyncio
async def fetch(session, url):
with aiohttp.Timeout(10):
async with session.get(url) as response:
return await response.text()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
with aiohttp.ClientSession(loop=loop) as session:
html = loop.run_until_complete(
fetch(session, 'http://python.org'))
print(html)
我如何修改它以获取一组URL而不是一个URL?
在旧asyncio
示例中,您将设置任务列表,例如
tasks = [
fetch(session, 'http://cnn.com'),
fetch(session, 'http://google.com'),
fetch(session, 'http://twitter.com')
]
我试图将这样的列表与上面的方法结合起来,但是失败了。
对于并行执行,您需要asyncio.Task
我已经将您的示例转换为从多个来源获取并发数据:
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
if response.status != 200:
response.raise_for_status()
return await response.text()
async def fetch_all(session, urls):
tasks = []
for url in urls:
task = asyncio.create_task(fetch(session, url))
tasks.append(task)
results = await asyncio.gather(*tasks)
return results
async def main():
urls = ['http://cnn.com',
'http://google.com',
'http://twitter.com']
async with aiohttp.ClientSession() as session:
htmls = await fetch_all(session, urls)
print(htmls)
if __name__ == '__main__':
asyncio.run(main())
问题内容: 在先前的问题中,一位作者建议使用aiohttp的新语法从中获取多个网址: 但是,当其中一个请求中断时(如上所述,由于导致错误),则错误不会得到处理,整个中断。 我就开始寻找插入有关的结果的测试,比如找地方了,或者一个,但我只是不理解如何与工作,与各种对象。 由于仍然很新,因此没有很多示例。如果向导可以显示如何执行此操作,对许多人来说将非常有帮助。毕竟,大多数人想要测试的第一件事就是同时
我有以下实体: 在一个查询中完成是可能的?
我想提取新闻文章在网站上发表的日期。对于某些网站,我有确切的html元素,其中日期/时间为(div,p,time),但在某些网站上,我没有: 以下是一些网站(德国网站)的链接: (2020年11月3日)http://www.linden.ch/de/aktuelles/aktuellesinformationen/?action=showinfo (2020年12月1日)http://www.re
请帮助我提取使用Jmetm。
JS新人来了!我正在尝试使用Fetch从jsonplaceholder创建一个带有假todo的todo列表。我想要取五个不同的ToDos并将它们放入我的列表中的不同列表项中。但不知怎的,五个托多人中只有一个出现了。 HTML: JS:
我正在尝试使用php和mysql进行在线测验/调查!我第一次使用php!我想做的是从我的数据库中获取问题和它的多项选择(测验和表格问题,其中Qid、Qtext、Ans1..Ans4作为其6列),一旦用户完成测验,就按下最后一个问题的提交按钮。。所有答案应保存在Db中(测验和表格答案,以Aid、Ans、Qid作为其列)!我搜索了相关的代码,但一个都听不懂。如果有人能帮忙,我将不胜感激。谢谢
我必须提取两个值(最小
asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。 asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyncio实现的HTTP框架。 我们先安装aiohttp: pip install aiohttp 然