grequests,并发执行接口请求的方法(简易版)
有时候需要处理很多请求,显然,一个一个去处理是要花费很多时间的
我们就需要用到并发的方式,python并发请求的方法很多,从简单到复杂。
本案例,介绍一个超级简单,使用grequests库,实现并发请求
案例应该是一系列查询的操作,具体忘记了,很久前写的,接口参数狠简单,headers、body,带上cookie就好了
因为是查询一组数据,所有先把查询对象变量化(可以写到excel里去读,这里就不介绍了,提供这个思路)

构造头信息,直接复制

执行请求步骤,这一步是核心内容

完整代码
import grequests
import requests
cookies = {
'__guid': 'x',
'UM_distinctid': '1713e1c320b108-x-4e4c0f20-15f900-1713e1c320c299',
'token': 'Bearer xxx.xxx.K6Z2EvPnaKLZSJW2TGBJiLvVro8wnxpFbrMhcfkHmVm8',
'online.xxx.com_mid3503': 'xxx',
'wx_Guestcookie19009': '%7b%22StoreId%22%xx%2c%xx%22%3a0%2c%x%22%3a%22%22%2c%22QueitErr%22%3a%22%22%7d',
'wx_Storecookie19009': 'xx',
'online.xxx.com': 'xx',
'production.xxx.com': 'xxxx',
'production.xxx.com_mid47243': 'xxxxx',
'wx_Guestcookie2948': '%7b%22StoreId%22%3a2948%2c%xxx%22%3a0%2c%22WxOpenId%22%3a%22%22%2c%22QueitErr%22%3a%22%22%7d',
'vshop_cookie2948': 'xxxx',
'sensorsdata2015jssdkcross': '%7B%22distinct_id%22%3A%xxx-076acb82c3e26f-4e4c0f20-1440000-1713e1c047632b%22%2C%22%24device_id%22%3A%221713e1c0475449-076acb82c3e26f-4e4c0f20-1440000-1713e1c047632b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22%22%2C%22%24latest_referrer_host%22%3A%22%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%7D%2C%22ip_address%22%3A%22175.0.128.172%22%7D',
'monitor_count': '15',
}
headers = {
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'Accept': 'application/json, text/plain, */*',
'Origin': 'https://my.xxx.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Referer': 'https://my.xxxx.com/Order/Delivered',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
data1 = {'ids': '1086131'}
data2 = {'ids': '1086132'}
data3 = {'ids': '1086133'}
data4 = {'ids': '1086134'}
data5 = {'ids': '1086135'}
data6 = {'ids': '1086136'}
data7 = {'ids': '1086137'}
data8 = {'ids': '1086138'}
data9 = {'ids': '1086139'}
data10 = {'ids': '1086140'}
req_list = [ # 请求列表
grequests.post('https://my.xx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data1),
grequests.post('https://my.xxx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data2),
grequests.post('https://my.xxx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data3),
grequests.post('https://my.xxx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data4),
grequests.post('https://my.xxx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data4),
grequests.post('https://my.xx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data5),
grequests.post('https://my.xxx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data6),
grequests.post('https://my.xxx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data7),
grequests.post('https://my.xxx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data8),
grequests.post('https://my.xx.com/Order/ConfirmDelivery', headers=headers, cookies=cookies, data=data10),
]
res_list = grequests.map(req_list) # 并行发送,等最后一个运行完后返回
print(res_list[0].text) # 打印第一个请求的响应文本
grequests,并发执行接口请求的方法(简易版)的更多相关文章
- axios取消接口请求
axios取消请求 这里就是分析一下接口请求需要被取消时的一些操作 因为我是用vue写的项目,所以标配用的是axios,怎么在axios中取消已经发送的请求呢? 1.在这之前我们还是先介绍一下原生js ...
- Python使用grequests并发发送请求
目录 前言 grequests简单使用 grequests和requests性能对比 异常处理 前言 requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快.但是 ...
- CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏
CASE函数 作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...
- MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- python3.x执行post请求时报错“POST data should be bytes or an iterable of bytes...”的解决方法
使用python3.5.1执行post请求时,一直报错"POST data should be bytes or an iterable of bytes. It cannot be of ...
- legend2---开发日志10(ajax请求的方法是否同样会执行base控制器里面的方法)
legend2---开发日志10(ajax请求的方法是否同样会执行base控制器里面的方法) 一.总结 一句话总结:会执行的,所以写base控制器里面的方法要注意,base控制器里面的方法要以查数据为 ...
- C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求
C# 动态创建SQL数据库(二) 使用Entity Framework 创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...
- CUDA编程接口:异步并发执行的概念和API
1.主机和设备间异步执行 为了易于使用主机和设备间的异步执行,一些函数是异步的:在设备完全完成任务前,控制已经返回给主机线程了.它们是: 内核发射; 设备间数据拷贝函数; 主机和设备内拷贝小于64KB ...
- 使用SpringAOP获取一次请求流经方法的调用次数和调用耗时
引语 作为工程师,不能仅仅满足于实现了现有的功能逻辑,还必须深入认识系统.一次请求,流经了哪些方法,执行了多少次DB操作,访问了多少次文件操作,调用多少次API操作,总共有多少次IO操作,多少CPU操 ...
- 从浅入深掌握并发执行框架Executor
引言 任务的执行 大多数并发应用程序都是围绕"任务执行(Task Execution)"来构造的:任务通常是一些抽象的且离散的工作单元. 任务通常是一些抽象的且离散的工作单元.通 ...
随机推荐
- Codeforces Round 957 (Div. 3)
题目链接:Codeforces Round 957 (Div. 3) 总结:E不懂,F差一个set去重 A. Only Pluses fag:枚举 B. Angry Monk fag:模拟 Solut ...
- 大模型工具KTransformer的安装
技术背景 前面写过几篇关于DeepSeek的文章,里面包含了通过Ollama来加载模型,以及通过llama.cpp来量化模型(实际上Llama.cpp也可以用来加载模型,功能类似于Ollama).这里 ...
- 发那科机器人R2000iC控制柜常见故障类型
发那科机器人维修R2000iC控制柜常见故障类型 电源故障: 发那科机器人R2000iC控制柜不能正常供电,可能是由于电源线路损坏.保险丝烧断.电源模块故障或电压不稳定等原因造成. 通信故障: 控制柜 ...
- C语言编程技巧 全局变量在多个c文件中公用的方法
在使用C语言编写程序时,经常会遇到这样的情况:我们希望在头文件中定义一个全局变量,并将其包含在两个不同的C文件中,以便这个全局变量可以在这两个文件中共享.举个例子,假设项目文件夹"proje ...
- Flume - [03] HDFS Sink
一.概述 将事件写入 Hadoop 分布式文件系统(HDFS).目前支持创建文本和序列文件.支持两种文件类型的压缩.可以根据经过的时间.数据大小或事件数 周期性地滚动文件(关闭当前文件并创建文件) ...
- 记一次.NET内存居高不下排查解决与启示
前情 我们有个海外的项目,一共70个服务,前前后后花了超过一年时间完成了云服务迁移和架构调整.主要是架构调整了,原来的docker swarm托管服务,新架构改为Kubernetes托管.几台云服务器 ...
- 墨者学院SQL注入(MySQL)的总结:
我们打开靶机 在这个界面我们可以看见在密码的下面有一个停机公告,我们点进去,会发现可以发现这个公告是存在id的,又可以会出现漏洞.所以我们尝试着在id=1的后面加上and 1=1 我们可以 ...
- go gin web服务器使用fvbock/endless优雅地重启或停止
gin使用fvbock/endless gin 正常使用注册路由时: package main import "github.com/gin-gonic/gin" func mai ...
- ant-design-pro 自定义表单 rules规则
表单输入 <ProFormText name="id" label={intl.formatMessage({ id: 'pages.secret.form.id' })} ...
- Golang Linux、Windows、Mac 下交叉编译
前言 Golang 支持交叉编译, 即同一份代码,在一个平台上生成,然后可以在另外一个平台去执行. 之前写过一篇 Golang windows下 交叉编译 感觉写的不够全面,这篇作为补充. 交叉编译 ...