python多线程请求带参数的多个接口问题怎么解决
多线程请求带参数的多个接口
对于进程/线程/携程/异步的内容 有时间准备写写了 真的一直用for去循环慢到怀疑人生 需要运用的场景也会很多 所以分开一点点总结一下
先上代码看一下内容,多线程请求接口
imoprt threading # 首先运用到threading模块 class BrushGifts: # 以下是两个相同的接口 send_gift_room_one()是送礼的接口 # 也就是说我想完成的状态是A送B B送A 两个用户同时想对方赠送礼物 def giftt(self, uid, recvUid, giftId): """ 送礼接口 :param uid: 送礼用户 :param recvUid: 收礼用户 :param giftId: 礼物道具id :return: """ VoiceRoom().send_gift_room_one(uid, recvUid, giftId) def giftt_a(self, uid, recvUid, giftId): # 与上面的接口相同 不多做叙述 # 没什么区别 就是写着好理解俩接口的概念 VoiceRoom().send_gift_room_one(recvUid, uid, giftId) if __name__ == '__main__': # 因为我的账号是储存在yaml文件内 所以需要先倒出需要用户的uid列表 # 送礼人与收礼人分别倒出 uid_list = YamlHandler(YamlThePath().voice_room_cpNew).get_uid_list(10) rUid_list = YamlHandler(YamlThePath().number_old).get_scope_uid(1500, 10) # 这里暂时先展示最简单的AB同时互送~ for (i, j) in zip(uid_list, rUid_list): # target内需要传入方法名 不要带()因为带括号就等于去调用了该方法 会直接开始执行 # args内传入输入带入的参数 可以按顺序来 也可以整理成元组或字典接收 t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620)) # 两个threading.Thread就是我请求并发两个接口 t2 = threading.Thread(target=BrushGifts().giftt, args=(j, i, 51620)) # t1.start()为执行 t1.start() t2.start()
主线程:
主线程的概念就是这个py文件内从头到位的执行 当我执行完最后一行代码t2.start()后 主线程会进入等待状态,等待子线程结束后主线程才会结束
子线程:
子线程的概念就是在主线程执行的过程中我执行到了这里 当然这里是通过t1.start()方法来进行调用的
t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620))
这时候系统会再开辟出一条子线程进行BrushGifts().giftt方法的执行与调用
主线程在进行的时候会执行t1.start()与t2.start()但是他不会等待他们执行结束,主线程会继续往下,所以t1.start()与t2.start()是同时请求,当t1.start()与t2.start()两个子进程都结束时,主线程才会结束~
因为主线程执行t1.start()与t2.start()是一行一行的执行 而且python无法做到准确意义上的并发 所以如果对数据速度要求很高的时候 此方法不适用
如何用python请求接口
作用:用来重复插入数据
1、首先下载好python 然后 cmd 输入 python 判断是否全局安装成功
2、下载好PcIdea
3、下载好自己需要的库
4、查看请求网络
按好F12
对接口进行请求
先将需要的header请求头标数据进行验证
查看正文请求
5、给你一个模板自己慢慢体会
import requests #导入requests包 import random import json import time # response = requests.get('http://www.baidu.com') # print(response.status_code) # 打印状态码 # print(response.url) # 打印请求url # print(response.headers) # 打印头信息 # print(response.cookies) # 打印cookie信息 # print(response.text) #以文本形式打印网页源码 # print(response.content) #以字节流形式打印 # print(response.json()) AddCarURL = "http://localhost:10086/jeecg-boot/cable/insurance/add" AddCarCookies = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjkwOTUyNzcsInVzZXJuYW1lIjoiYWRtaW4ifQ.Kn1jB5gUkCdnszSVxnjVVKtRMbx_WJSVZW6G-yJaid8" randomStr = "ABCDEFGHIJKLMNOPQRST" randomInsurance = ["泰康人寿","阳光保险","新华保险","太平人寿","同方全球人寿","友邦保险"," 招商仁和","平安保险"] randomBox = ["石鲜仓储","明顺仓储","雄星仓储","金盛仓储","旺恒仓储","中豹仓储","飞翔仓储","速发仓储","春天仓储"] sess = requests.session() headers = { "X-Access-Token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjkxMDUyMjUsInVzZXJuYW1lIjoiYWRtaW4ifQ.EUAjJYACel8QHFw4AFERIaDjXZJTwOOyp8uncqx3Jps", "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19041", "Referer":"http://localhost:3000/cable/VehicleList", "Origin":"http://localhost:3000", "Host":"localhost:10086", "Content-Type":"application/json; charset=utf-8" } a1=(2017,1,1,0,0,0,0,0,0) #设置开始日期时间元组(1976-01-01 00:00:00) a2=(2019,3,16,23,59,59,0,0,0) #设置结束日期时间元组(1990-12-31 23:59:59) a3=(2019,3,16,0,0,0,0,0,0) #设置开始日期时间元组(1976-01-01 00:00:00) a4=(2021,8,16,23,59,59,0,0,0) #设置结束日期时间元组(1990-12-31 23:59:59) start=time.mktime(a1) #生成开始时间戳 end=time.mktime(a2) #生成结束时间戳 start1=time.mktime(a3) #生成开始时间戳 end2=time.mktime(a4) #生成结束时间戳 # for i in range(10): # t=random.randint(start,end) #在开始和结束时间戳中随机取出一个 # date_touple=time.localtime(t) #将时间戳生成时间元组 # date=time.strftime("%Y-%m-%d",date_touple) #将时间元组转成格式化字符串(1976-05-21) # # t1 = random.randint(start1,end2) # date_touplen=time.localtime(t1) #将时间戳生成时间元组 # dateOne=time.strftime("%Y-%m-%d",date_touplen) #将时间元组转成格式化字符串(1976-05-21) # print(date + " " +dateOne) def addCar(num:int): # {"type": "2", "carryingCapacity": "3吨", "license": "粤A888", "engineNumber": "123456", "state": 0} # {"vehicleId": "2", "insuraName": "人寿保险", "insurancePolicy": "UY1254SD5492W", "insuranceDateBegin": "2021-08-16", # "insuranceDateEnd": "2021-08-31", "strongPolicy": "UY1254SD5492E", "strongDateBegin": "2021-07-01", # "strongDateEnd": "2021-08-28", "license": "2"} for i in range(num): t = random.randint(start, end) # 在开始和结束时间戳中随机取出一个 date_touple = time.localtime(t) # 将时间戳生成时间元组 date = time.strftime("%Y-%m-%d", date_touple) # 将时间元组转成格式化字符串(1976-05-21) t1 = random.randint(start1, end2) date_touplen = time.localtime(t1) # 将时间戳生成时间元组 dateOne = time.strftime("%Y-%m-%d", date_touplen) # 将时间元组转成格式化字符串(1976-05-21) datas = {} datas["vehicleId"] = "2" datas["insuraName"] = random.choice(randomInsurance) datas["insurancePolicy"] = random.choice(randomStr) + str(random.randint(10000, 99999)) + random.choice(randomStr) + str(random.randint(10000, 99999)); datas["insuranceDateBegin"] = date datas["insuranceDateEnd"] = dateOne datas["strongPolicy"] = random.choice(randomStr) + str(random.randint(10000, 99999)) + random.choice(randomStr) + str(random.randint(10000, 99999)); datas["strongDateBegin"] = date datas["strongDateEnd"] = dateOne datas["license"] = i print(datas) res=requests.post(url=AddCarURL, data=json.dumps(datas), headers=headers) print(res.text) addCar(100)
记得要通过 token 验证,还有根据数据转json 即可。
以上是python多线程请求带参数的多个接口问题怎么解决的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

VS Code 可用于编写 Python,并提供许多功能,使其成为开发 Python 应用程序的理想工具。它允许用户:安装 Python 扩展,以获得代码补全、语法高亮和调试等功能。使用调试器逐步跟踪代码,查找和修复错误。集成 Git,进行版本控制。使用代码格式化工具,保持代码一致性。使用 Linting 工具,提前发现潜在问题。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

VS Code可以在Windows 8上运行,但体验可能不佳。首先确保系统已更新到最新补丁,然后下载与系统架构匹配的VS Code安装包,按照提示安装。安装后,注意某些扩展程序可能与Windows 8不兼容,需要寻找替代扩展或在虚拟机中使用更新的Windows系统。安装必要的扩展,检查是否正常工作。尽管VS Code在Windows 8上可行,但建议升级到更新的Windows系统以获得更好的开发体验和安全保障。

在 VS Code 中,可以通过以下步骤在终端运行程序:准备代码和打开集成终端确保代码目录与终端工作目录一致根据编程语言选择运行命令(如 Python 的 python your_file_name.py)检查是否成功运行并解决错误利用调试器提升调试效率

VS Code 扩展存在恶意风险,例如隐藏恶意代码、利用漏洞、伪装成合法扩展。识别恶意扩展的方法包括:检查发布者、阅读评论、检查代码、谨慎安装。安全措施还包括:安全意识、良好习惯、定期更新和杀毒软件。
