您好,登錄后才能下訂單哦!
本篇文章為大家展示了Fabric中怎么批量管理遠(yuǎn)程服務(wù)器,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
下面先看看這個(gè)基類:
有了這個(gè)基類,接下來就要看 SerialGroup 和 ThreadingGroup 的具體實(shí)現(xiàn)了。
SerialGroup 類很簡(jiǎn)單,只實(shí)現(xiàn)了一個(gè) run() 方法。因?yàn)轭愒诔跏蓟瘯r(shí)為所有 host 建立了連接而且存了起來,所以這里只需用 for 循環(huán)依次取出,再執(zhí)行 Connection 的 run() 方法。
這里可以看到一種非常實(shí)用的開發(fā)技巧:創(chuàng)建類時(shí),讓它繼承內(nèi)置的數(shù)據(jù)結(jié)構(gòu)(如 list、dict), 這樣可以直接使用 self.append()、self.extend()、self.update() 等方法把關(guān)鍵的信息存到“自身”,再到取出時(shí)則“for xxx in self”,這樣就免了創(chuàng)建臨時(shí)的 list 或 dict,也免得要在參數(shù)中傳來傳去。
GroupResult 和 GroupException 是對(duì)執(zhí)行結(jié)果和異常的處理,不是我們關(guān)注的重點(diǎn),這里略過。
接下來看看 ThreadingGroup,它也只有一個(gè) run() 方法:
ExceptionHandlingThread 是一個(gè)繼承了 threading.Thread 的類,這是一種創(chuàng)建多線程的方式。每個(gè)線程執(zhí)行的方法主要做兩件事:執(zhí)行 connection 的 run() 方法,以及將執(zhí)行成功的結(jié)果存入隊(duì)列中。
接下來再分別把執(zhí)行成功的結(jié)果與出異常的結(jié)果都存入到 results 中。
所以,F(xiàn)abric 是使用了 threading 多線程的方式來實(shí)現(xiàn)并發(fā)。網(wǎng)絡(luò)請(qǐng)求是 IO 密集型的,使用多線程是不錯(cuò)的方式。
至此,對(duì)于我們?cè)陂_頭提的問題,就有了一個(gè)初步的答案:Fabric 封裝了兩種 Group 來批量管理服務(wù)器,其中串行方式就是用了簡(jiǎn)單的 for 循環(huán),而并發(fā)方式使用了 threading 多線程方式。
上述內(nèi)容就是Fabric中怎么批量管理遠(yuǎn)程服務(wù)器,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(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)容。