wordPress回復(fù)表情百度seo關(guān)鍵詞排名 s
前言
嗨嘍~大家好呀,這里是魔王吶 ? ~!
python更多源碼/資料/解答/教程等 點(diǎn)擊此處跳轉(zhuǎn)文末名片免費(fèi)獲取
需求背景:
現(xiàn)在用jenkins構(gòu)建自動(dòng)化測(cè)試(2個(gè)job),公司現(xiàn)將自動(dòng)化納入到發(fā)布系統(tǒng)
要求每次構(gòu)建成功之后,把測(cè)試結(jié)果發(fā)送給發(fā)布系統(tǒng)。這就需要先獲取jenkins構(gòu)建的結(jié)果,
如果構(gòu)建結(jié)束,才能發(fā)送測(cè)試結(jié)果,否則就要等待jenkins構(gòu)建結(jié)束。
理解回調(diào)函數(shù):
像這樣類似:男女朋友約會(huì)結(jié)束,男方要求女方到家后發(fā)1個(gè)信息,告訴他安全到家了。
就是python回調(diào)函數(shù)的應(yīng)用場(chǎng)景。男女朋友約會(huì)結(jié)束是在主函數(shù)mainfunc中,女朋友回家這個(gè)動(dòng)作由callback函數(shù)完成。
在mainfunc函數(shù)中,男朋友會(huì)接收女朋友發(fā)送已到家的消息,那怎么接收呢?
就是通過(guò)調(diào)用callback這個(gè)函數(shù)來(lái)獲得女朋友到家的狀態(tài),這個(gè)過(guò)程就稱之為回調(diào)函數(shù)
基本思路:
先用一個(gè)demo理清自己的思路,要做哪些事?共分幾個(gè)步驟?
每個(gè)步驟要完成哪些事情?這些思路搞定之后,代碼也就完成了。
這里的有一個(gè)技巧:先用randomint隨機(jī)生成一個(gè)數(shù)字,用來(lái)代表jenkins的構(gòu)建結(jié)果狀態(tài),而不是每次都真的去請(qǐng)求接口。因?yàn)檫@會(huì)增加驗(yàn)證結(jié)果的時(shí)間成本,分散精力。
最后整個(gè)流程順下來(lái),再把隨機(jī)數(shù)部分替換為真正去請(qǐng)求jenkins接口,這會(huì)大大節(jié)約調(diào)試時(shí)間。
version1:
demo 理清思路,用簡(jiǎn)單的代碼描述清楚自己想要實(shí)現(xiàn)的效果
'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:926207505
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書!
'''
def mainfunc(func):''':param func: callback func Name:return:'''print('start build job')func()print('send report to ding wen qi')def callback():''':return: jenkins job build state'''print('jenkins is done')mainfunc(callback)
version2:
callback函數(shù),獲取job的構(gòu)建狀態(tài)。
該函數(shù)返回一個(gè)狀態(tài),true或false。
true表示job已經(jīng)構(gòu)建結(jié)束,false表示程序仍然在構(gòu)建中
'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:926207505
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書!
'''
def callback():''':return: jenkins job build state'''num = random.randint(1,10)#利用randint隨機(jī)生成一個(gè)num 假裝enkins是返回的構(gòu)建結(jié)果。偶數(shù)認(rèn)為已經(jīng)構(gòu)建結(jié)束,奇數(shù)認(rèn)為仍在構(gòu)建中print(num)if num % 2 != 0:#奇數(shù)print('kins is building job')return {'buildState':False}else:#偶數(shù)print('jenkins is done')return {'buildState': True}
version3:
mainfunc接收callback返回的狀態(tài),
true:做send report操作,
false 再次調(diào)用func函數(shù)確認(rèn),直到結(jié)果是true
while True:flag = func()if flag :print('step3:send report to ding wen qi')break
結(jié)果:
1 step1:start build job
2 step2:jenkins is building job
3 step2:jenkins is building job
4 step2:jenkins is done
5 step3:send report to ding wen qi
version4:
加入等待時(shí)間,在詢問(wèn)jenkins是否構(gòu)建結(jié)束之前,先等上10秒1鐘(正常1個(gè)job至少構(gòu)建1分鐘以上,不停詢問(wèn)很浪費(fèi)資源)
time.sleep(2)
完整的demo代碼:
'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:926207505
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書!
'''
import random
import timedef mainfunc(func):''':param func: callback func Name:return:'''print('step1:start build job')#根據(jù)callback返回的狀態(tài),決定是否進(jìn)行下一步操作while True:flag = func()if flag :print('step3:send report')breakdef callback():''':return: jenkins job build state'''#jenkins構(gòu)建job需要至少3分鐘,所以每隔1分鐘請(qǐng)求一次time.sleep(2)num = random.randint(1,100)#利用randint隨機(jī)生成一個(gè)num 假裝enkins是返回的構(gòu)建結(jié)果。偶數(shù)認(rèn)為已經(jīng)構(gòu)建結(jié)束,奇數(shù)認(rèn)為仍在構(gòu)建中# print(num)if num % 2 != 0:#奇數(shù)print('step2:jenkins is building job')return Falseelse:#偶數(shù)print('step2:jenkins is done')return Truemainfunc(callback)
尾語(yǔ)
最后感謝你觀看我的文章吶~本次航班到這里就結(jié)束啦 🛬
希望本篇文章有對(duì)你帶來(lái)幫助 🎉,有學(xué)習(xí)到一點(diǎn)知識(shí)~
躲起來(lái)的星星🍥也在努力發(fā)光,你也要努力加油(讓我們一起努力叭)。