您好,登錄后才能下訂單哦!
本篇文章為大家展示了Fabric中怎么批量管理遠程服務器,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
下面先看看這個基類:
有了這個基類,接下來就要看 SerialGroup 和 ThreadingGroup 的具體實現了。
SerialGroup 類很簡單,只實現了一個 run() 方法。因為類在初始化時為所有 host 建立了連接而且存了起來,所以這里只需用 for 循環依次取出,再執行 Connection 的 run() 方法。
這里可以看到一種非常實用的開發技巧:創建類時,讓它繼承內置的數據結構(如 list、dict), 這樣可以直接使用 self.append()、self.extend()、self.update() 等方法把關鍵的信息存到“自身”,再到取出時則“for xxx in self”,這樣就免了創建臨時的 list 或 dict,也免得要在參數中傳來傳去。
GroupResult 和 GroupException 是對執行結果和異常的處理,不是我們關注的重點,這里略過。
接下來看看 ThreadingGroup,它也只有一個 run() 方法:
ExceptionHandlingThread 是一個繼承了 threading.Thread 的類,這是一種創建多線程的方式。每個線程執行的方法主要做兩件事:執行 connection 的 run() 方法,以及將執行成功的結果存入隊列中。
接下來再分別把執行成功的結果與出異常的結果都存入到 results 中。
所以,Fabric 是使用了 threading 多線程的方式來實現并發。網絡請求是 IO 密集型的,使用多線程是不錯的方式。
至此,對于我們在開頭提的問題,就有了一個初步的答案:Fabric 封裝了兩種 Group 來批量管理服務器,其中串行方式就是用了簡單的 for 循環,而并發方式使用了 threading 多線程方式。
上述內容就是Fabric中怎么批量管理遠程服務器,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。