在將 Scrapy 代碼部署到遠(yuǎn)程 Scrapyd 的時(shí)候,其第一步就是要將代碼打包為 Egg 文件,其次需要將 Egg 文件上傳到遠(yuǎn)程主機(jī),這個(gè)過程如果我們用程序來實(shí)現(xiàn)是完全可以的,但是我們并不需要做這些工作,因?yàn)?ScrapydClient 已經(jīng)為我們實(shí)現(xiàn)了這些功能。
下面我們就來過一下 ScrapydClient 的安裝過程。
創(chuàng)新互聯(lián)是一家專業(yè)提供內(nèi)丘企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、HTML5建站、小程序制作等業(yè)務(wù)。10年已為內(nèi)丘眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
推薦使用 Pip 安裝,命令如下:
pip3 install scrapyd-client
安裝成功后會有一個(gè)可用命令,叫做 scrapyd-deploy,即部署命令。
我們可以輸入如下測試命令測試 ScrapydClient 是否安裝成功:
scrapyd-deploy -h
如果出現(xiàn)如圖 1-87 類似輸出則證明 ScrapydClient 已經(jīng)成功安裝:
圖 1-87 運(yùn)行結(jié)果
在后文我們會詳細(xì)了解它的用法。
安裝好了 Scrapyd 之后,我們可以直接請求它提供的 API 即可獲取當(dāng)前主機(jī)的 Scrapy 任務(wù)運(yùn)行狀況。
如某臺主機(jī)的 IP 為 192.168.1.1,則可以直接運(yùn)行如下命令獲取當(dāng)前主機(jī)的所有 Scrapy 項(xiàng)目:
curl http://localhost:6800/listprojects.json
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學(xué)習(xí)視頻,這里是Python學(xué)習(xí)者的聚集地,零基礎(chǔ),進(jìn)階,都?xì)g迎
運(yùn)行結(jié)果:
{"status": "ok", "projects": ["myproject", "otherproject"]}
返回結(jié)果是 Json 字符串,通過解析這個(gè)字符串我們便可以得到當(dāng)前主機(jī)所有項(xiàng)目。
但是用這種方式來獲取任務(wù)狀態(tài)還是有點(diǎn)繁瑣,所以 ScrapydAPI 就為它做了一層封裝,下面我們來看下它的安裝方式。
推薦使用 Pip 安裝,命令如下:
pip install python-scrapyd-api
安裝完成之后便可以使用 Python 來獲取主機(jī)狀態(tài)了,所以如上的操作便可以用 Python 代碼實(shí)現(xiàn):
from scrapyd_api import ScrapydAPI
scrapyd = ScrapydAPI('http://localhost:6800')
print(scrapyd.list_projects())
運(yùn)行結(jié)果:
["myproject", "otherproject"]
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學(xué)習(xí)視頻,這里是Python學(xué)習(xí)者的聚集地,零基礎(chǔ),進(jìn)階,都?xì)g迎
這樣我們便可以用 Python 直接來獲取各個(gè)主機(jī)上 Scrapy 任務(wù)的運(yùn)行狀態(tài)了。