当前位置:

首页 > 编程开发 > python多线程请求带参数的多个接口问题怎么解决

python多线程请求带参数的多个接口问题怎么解决

多线程请求带参数的多个接口对于进程/线程/携程/异步的内容有时间准备写写了真的一直用for去循环慢到怀疑人生需要运用的场景也会很多所以分开一点点总结一下先上代码看一下内容,多线程请求接口imoprtthreading#首先运用到threading模块classBrushGifts:#以下是两个相同的接口send_gift_room_one()是送礼的接口#也就是说我想完成的状态是A送BB送A两个用户同时想对方赠送礼物defgiftt(self,uid,recvUid,giftId):"""送礼接口:par

本文目录

    多线程请求带参数的多个接口

    对于进程/线程/携程/异步的内容 有时间准备写写了 真的一直用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、下载好自己需要的库

    python多线程请求带参数的多个接口问题怎么解决

    4、查看请求网络

    •  按好F12

    •  对接口进行请求

    •  先将需要的header请求头标数据进行验证

    python多线程请求带参数的多个接口问题怎么解决

    • 查看正文请求

    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 即可。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。