python自动化笔记——异步requests请求

需求背景:目前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])

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值