溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python多線程請(qǐng)求帶參數(shù)的多個(gè)接口問題如何解決

發(fā)布時(shí)間:2023-04-26 14:38:04 來源:億速云 閱讀:147 作者:zzz 欄目:編程語言

這篇文章主要介紹了python多線程請(qǐng)求帶參數(shù)的多個(gè)接口問題如何解決的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇python多線程請(qǐng)求帶參數(shù)的多個(gè)接口問題如何解決文章都會(huì)有所收獲,下面我們一起來看看吧。

多線程請(qǐng)求帶參數(shù)的多個(gè)接口

對(duì)于進(jìn)程/線程/攜程/異步的內(nèi)容 有時(shí)間準(zhǔn)備寫寫了 真的一直用for去循環(huán)慢到懷疑人生 需要運(yùn)用的場(chǎng)景也會(huì)很多 所以分開一點(diǎn)點(diǎn)總結(jié)一下

先上代碼看一下內(nèi)容,多線程請(qǐng)求接口

imoprt threading # 首先運(yùn)用到threading模塊


class BrushGifts:
    # 以下是兩個(gè)相同的接口 send_gift_room_one()是送禮的接口
    # 也就是說我想完成的狀態(tài)是A送B B送A 兩個(gè)用戶同時(shí)想對(duì)方贈(zèng)送禮物
    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):
        # 與上面的接口相同 不多做敘述
        # 沒什么區(qū)別 就是寫著好理解倆接口的概念
        VoiceRoom().send_gift_room_one(recvUid, uid, giftId)


if __name__ == '__main__':
    # 因?yàn)槲业馁~號(hào)是儲(chǔ)存在yaml文件內(nèi) 所以需要先倒出需要用戶的uid列表
    # 送禮人與收禮人分別倒出
    uid_list = YamlHandler(YamlThePath().voice_room_cpNew).get_uid_list(10)
    rUid_list = YamlHandler(YamlThePath().number_old).get_scope_uid(1500, 10)
    # 這里暫時(shí)先展示最簡(jiǎn)單的AB同時(shí)互送~
    for (i, j) in zip(uid_list, rUid_list):
        # target內(nèi)需要傳入方法名 不要帶()因?yàn)閹Юㄌ?hào)就等于去調(diào)用了該方法 會(huì)直接開始執(zhí)行
        # args內(nèi)傳入輸入帶入的參數(shù) 可以按順序來 也可以整理成元組或字典接收
        t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620))
        # 兩個(gè)threading.Thread就是我請(qǐng)求并發(fā)兩個(gè)接口
        t2 = threading.Thread(target=BrushGifts().giftt, args=(j, i, 51620))
        # t1.start()為執(zhí)行
        t1.start()
        t2.start()

主線程:

主線程的概念就是這個(gè)py文件內(nèi)從頭到位的執(zhí)行 當(dāng)我執(zhí)行完最后一行代碼t2.start()后 主線程會(huì)進(jìn)入等待狀態(tài),等待子線程結(jié)束后主線程才會(huì)結(jié)束

子線程:

子線程的概念就是在主線程執(zhí)行的過程中我執(zhí)行到了這里 當(dāng)然這里是通過t1.start()方法來進(jìn)行調(diào)用的

t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620))

這時(shí)候系統(tǒng)會(huì)再開辟出一條子線程進(jìn)行BrushGifts().giftt方法的執(zhí)行與調(diào)用

主線程在進(jìn)行的時(shí)候會(huì)執(zhí)行t1.start()與t2.start()但是他不會(huì)等待他們執(zhí)行結(jié)束,主線程會(huì)繼續(xù)往下,所以t1.start()與t2.start()是同時(shí)請(qǐng)求,當(dāng)t1.start()與t2.start()兩個(gè)子進(jìn)程都結(jié)束時(shí),主線程才會(huì)結(jié)束~

因?yàn)橹骶€程執(zhí)行t1.start()與t2.start()是一行一行的執(zhí)行 而且python無法做到準(zhǔn)確意義上的并發(fā) 所以如果對(duì)數(shù)據(jù)速度要求很高的時(shí)候 此方法不適用

如何用python請(qǐng)求接口

作用:用來重復(fù)插入數(shù)據(jù)

1、首先下載好python 然后 cmd 輸入 python 判斷是否全局安裝成功

2、下載好PcIdea

3、下載好自己需要的庫(kù)

python多線程請(qǐng)求帶參數(shù)的多個(gè)接口問題如何解決

4、查看請(qǐng)求網(wǎng)絡(luò)

  • 按好F12

  • 對(duì)接口進(jìn)行請(qǐng)求

  • 先將需要的header請(qǐng)求頭標(biāo)數(shù)據(jù)進(jìn)行驗(yàn)證

python多線程請(qǐng)求帶參數(shù)的多個(gè)接口問題如何解決

  • 查看正文請(qǐng)求

5、給你一個(gè)模板自己慢慢體會(huì)

 import requests                         #導(dǎo)入requests包
import random
import json
import time
 
# response = requests.get('http://www.baidu.com')
# print(response.status_code)  # 打印狀態(tài)碼
# print(response.url)          # 打印請(qǐng)求url
# print(response.headers)      # 打印頭信息
# print(response.cookies)      # 打印cookie信息
# print(response.text)  #以文本形式打印網(wǎng)頁源碼
# print(response.content) #以字節(jié)流形式打印
# print(response.json())
 
 
AddCarURL = "http://localhost:10086/jeecg-boot/cable/insurance/add"
AddCarCookies = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjkwOTUyNzcsInVzZXJuYW1lIjoiYWRtaW4ifQ.Kn1jB5gUkCdnszSVxnjVVKtRMbx_WJSVZW6G-yJaid8"
randomStr = "ABCDEFGHIJKLMNOPQRST"
randomInsurance = ["泰康人壽","陽光保險(xiǎn)","新華保險(xiǎn)","太平人壽","同方全球人壽","友邦保險(xiǎn)"," 招商仁和","平安保險(xiǎn)"]
randomBox = ["石鮮倉(cāng)儲(chǔ)","明順倉(cāng)儲(chǔ)","雄星倉(cāng)儲(chǔ)","金盛倉(cāng)儲(chǔ)","旺恒倉(cāng)儲(chǔ)","中豹倉(cāng)儲(chǔ)","飛翔倉(cāng)儲(chǔ)","速發(fā)倉(cāng)儲(chǔ)","春天倉(cāng)儲(chǔ)"]
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)              #設(shè)置開始日期時(shí)間元組(1976-01-01 00:00:00)
a2=(2019,3,16,23,59,59,0,0,0)    #設(shè)置結(jié)束日期時(shí)間元組(1990-12-31 23:59:59)
 
a3=(2019,3,16,0,0,0,0,0,0)              #設(shè)置開始日期時(shí)間元組(1976-01-01 00:00:00)
a4=(2021,8,16,23,59,59,0,0,0)    #設(shè)置結(jié)束日期時(shí)間元組(1990-12-31 23:59:59)
 
start=time.mktime(a1)    #生成開始時(shí)間戳
end=time.mktime(a2)      #生成結(jié)束時(shí)間戳
 
start1=time.mktime(a3)    #生成開始時(shí)間戳
end2=time.mktime(a4)      #生成結(jié)束時(shí)間戳
 
# for i in range(10):
#     t=random.randint(start,end)    #在開始和結(jié)束時(shí)間戳中隨機(jī)取出一個(gè)
#     date_touple=time.localtime(t)          #將時(shí)間戳生成時(shí)間元組
#     date=time.strftime("%Y-%m-%d",date_touple)  #將時(shí)間元組轉(zhuǎn)成格式化字符串(1976-05-21)
#
#     t1 = random.randint(start1,end2)
#     date_touplen=time.localtime(t1)          #將時(shí)間戳生成時(shí)間元組
#     dateOne=time.strftime("%Y-%m-%d",date_touplen)  #將時(shí)間元組轉(zhuǎn)成格式化字符串(1976-05-21)
#     print(date + " " +dateOne)
 
 
 
 
 
def addCar(num:int):
    # {"type": "2", "carryingCapacity": "3噸", "license": "粵A888", "engineNumber": "123456", "state": 0}
 
    # {"vehicleId": "2", "insuraName": "人壽保險(xiǎn)", "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)  # 在開始和結(jié)束時(shí)間戳中隨機(jī)取出一個(gè)
        date_touple = time.localtime(t)  # 將時(shí)間戳生成時(shí)間元組
        date = time.strftime("%Y-%m-%d", date_touple)  # 將時(shí)間元組轉(zhuǎn)成格式化字符串(1976-05-21)
 
        t1 = random.randint(start1, end2)
        date_touplen = time.localtime(t1)  # 將時(shí)間戳生成時(shí)間元組
        dateOne = time.strftime("%Y-%m-%d", date_touplen)  # 將時(shí)間元組轉(zhuǎn)成格式化字符串(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 驗(yàn)證,還有根據(jù)數(shù)據(jù)轉(zhuǎn)json 即可。

關(guān)于“python多線程請(qǐng)求帶參數(shù)的多個(gè)接口問題如何解決”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“python多線程請(qǐng)求帶參數(shù)的多個(gè)接口問題如何解決”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI