1. 程式人生 > 實用技巧 >15.5 Gerapy 分散式管理

15.5 Gerapy 分散式管理

15.5 Gerapy 分散式管理

我們可以通過 Scrapyd-Client 將 Scrapy 專案部署到 Scrapyd 上,並且可以通過 Scrapyd API 來控制 Scrapy 的執行。那麼,我們是否可以做到更優化?方法是否可以更方便可控?

我們重新分析一下當前可以優化的問題。

  • 使用 Scrapyd-Client 部署時,需要在配置檔案中配置好各臺主機的地址,然後利用命令列執行部署過程。如果我們省去各臺主機的地址配置,將命令列對接圖形介面,只需要點選按鈕即可實現批量部署,這樣就更方便了。

  • 使用 Scrapyd API 可以控制 Scrapy 任務的啟動、終止等工作,但很多操作還是需要程式碼來實現,同時獲取爬取日誌還比較煩瑣。如果我們有一個圖形介面,只需要點選按鈕即可啟動和終止爬蟲任務,同時還可以實時檢視爬取日誌報告,那這將大大節省我們的時間和精力。

所以我們的終極目標是如下內容。

  • 更方便地控制爬蟲執行
  • 更直觀地檢視爬蟲狀態
  • 更實時地檢視爬取結果
  • 更簡單地實現專案部署
  • 更統一地實現主機管理

而這所有的工作均可通過 Gerapy 來實現。

Gerapy 是一個基於 Scrapyd、Scrapyd API、Django、Vue.js 搭建的分散式爬蟲管理框架。接下來將簡單介紹它的使用方法。

1. 準備工作

在本節開始之前請確保已經正確安裝好了 Gerapy,安裝方式可以參考第一章。

2. 使用說明

首先可以利用 gerapy 命令新建一個專案,命令如下:

gerapy init

這樣會在當前目錄下生成一個 gerapy 資料夾,然後進入 gerapy 資料夾,會發現一個空的 projects 資料夾,我們後文會提及。

這時先對資料庫進行初始化:

gerapy migrate

這樣即會生成一個 SQLite 資料庫,資料庫中會用於儲存各個主機配置資訊、部署版本等。

接下來啟動 Gerapy 服務,命令如下:

gerapy runserver

這樣即可在預設 8000 埠上開啟 Gerapy 服務,我們瀏覽器開啟:http://localhost:8000 即可進入 Gerapy 的管理頁面,在這裡提供了主機管理和專案管理的功能。

主機管理中,我們可以將各臺主機的 Scrapyd 執行地址和埠新增,並加以名稱標記,新增之後便會出現在主機列表中,Gerapy 會監控各臺主機的執行狀況並以不同的狀態標識,如圖 15-6 所示:

圖 15-6 主機列表

另外剛才我們提到在 gerapy 目錄下有一個空的 projects 資料夾,這就是存放 Scrapy 目錄的資料夾,如果我們想要部署某個 Scrapy 專案,只需要將該專案檔案放到 projects 資料夾下即可。

比如這裡我放了兩個 Scrapy 專案,如圖 15-7 所示:

圖 15-7 專案目錄

這時重新回到 Gerapy 管理介面,點選專案管理,即可看到當前專案列表,如圖 15-8 所示:

圖 15-8 專案列表

由於此處我有過打包和部署記錄,在這裡分別予以顯示。

Gerapy 提供了專案線上編輯功能,我們可以點選編輯即可視覺化地對專案進行編輯,如圖 15-9 所示:

圖 15-9 視覺化編輯

如果專案沒有問題,可以點選部署進行打包和部署,部署之前需要打包專案,打包時可以指定版本描述,如圖 15-10 所示:

圖 15-10 專案打包

打包完成之後可以直接點選部署按鈕即可將打包好的 Scrapy 專案部署到對應的雲主機上,同時也可以批量部署,如圖 15-11 所示:

圖 15-11 部署頁面

部署完畢之後就可以回到主機管理頁面進行任務排程了,點選排程即可檢視進入任務管理頁面,可以當前主機所有任務的執行狀態,如圖 15-12 所示:

圖 15-12 任務執行狀態

我們可以通過點選新任務、停止等按鈕來實現任務的啟動和停止等操作,同時也可以通過展開任務條目檢視日誌詳情,如圖 15-13 所示:

圖 15-13 檢視日誌

這樣我們就可以實時檢視到各個任務執行狀態了。

以上便是 Gerapy 的一些功能的簡單介紹,使用它我們可以更加方便地管理、部署和監控 Scrapy 專案,尤其是對分散式爬蟲來說。

更多的資訊可以檢視 Gerapy 的 GitHub 地址:https://github.com/Gerapy

3. 結語

本節我們介紹了 Gerapy 的簡單使用,利用它我們可以方便地實現 Scrapy 專案的部署、管理等操作,可以大大提高效率。