python自动化笔记——异步requests请求
1、多个请求ahttp:ahttp 是一个所有的http连接请求均使用协程的方式,使请求过程中 IO 操作交给其他硬件,而CPU专注于处理计算型任务,可以大量的节约等待的时间ahttp的使用方式基本上和requests一致,只不过requests请求是同步,而ahttp的请求是异步。不同的是requests可以直接请求,而由于ahttp是异步的,所以需要构造好请求之后进行一次“执行”安装:pip
·
需求背景:目前SaaS复制问卷的时候是通过调接口的方式进行的,在需要批量请求的情况下,大量接口需要并行的情况,需要用到异步请求
1、多个请求
ahttp:ahttp 是一个所有的http连接请求均使用协程的方式,使请求过程中 IO 操作交给其他硬件,而CPU专注于处理计算型任务,可以大量的节约等待的时间
ahttp的使用方式基本上和requests一致,只不过requests请求是同步,而ahttp的请求是异步。不同的是requests可以直接请求,而由于ahttp是异步的,所以需要构造好请求之后进行一次“执行”
安装:
pip install ahttp
以下用多个请求示例:整理好所有接口后,放进reqs充当请求对象,再通过ahttp.run执行这些请求
import ahttp
urls1 = [ f"https://movie.douban.com/top250?start={i*25}" for i in range(2)]
urls=[
'http://www.heroku.com',
'http://python-tablib.org',
'http://httpbin.org',
'http://python-requests.org',
'http://fakedomain/',
'http://kennethreitz.com'
]
reqs = [ahttp.post(i) for i in urls]
resqs = ahttp.run(reqs,order=True,pool=3)#按顺序排序,pool线程池可以设置最大并发数
多个请求(使用session)
和 前面的使用ahttp构造请求list请求相比,使用session请求速度更快,而且共享cookies,因为session创建的是一个持久的链接。由于是异步请求,得到的resps
并不是按照reqs
请求的顺序排列的,因此我们需要按照顺序处理,只需要在ahttp.run
添加一个参数order
import ahttp
urls1 = [ f"https://movie.douban.com/top250?start={i*25}" for i in range(2)]
urls=[
'http://www.heroku.com',
'http://python-tablib.org',
'http://httpbin.org',
'http://python-requests.org',
'http://fakedomain/',
'http://kennethreitz.com'
]
sess=ahttp.Session()#和使用ahttp构造请求list请求相比,使用session请求速度更快,而且共享cookies,因为session创建的是一个持久的链接
reqs = [sess.post(i) for i in urls]
resqs = ahttp.run(reqs,order=True,pool=3)#按顺序排序,pool线程池可以设置最大并发数
print('全部',resqs)
print('第1个',resqs[0])
更多推荐
已为社区贡献1条内容
所有评论(0)