前言
時間回到早上九點四十五分,此時的我突然想到,
怪了我的爬蟲怎麼沒跑,難道是網站的網址改掉了嗎?
經過一連串的查證,發現,我的爬蟲又掛拉阿阿阿阿阿
正文
1.重開後發現docker服務沒啟動,連線不到docker
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
還好還能強制執行服務
sudo service docker start
看樣子 scrapy的容器還是掛了,啟動不了。
查一下目前的container狀態,顯示Exited (255) (Fig.1)
(Fig.1)
2.先看看log寫啥吧
取最後100筆資料
docker logs scrapydII --tail 100
看了看錯誤,還是跟上次 這篇([DOCKER]SCRAPYD CONTAINER無法啟動,搶救筆記) 一樣
builtins.AttributeError: 'int' object has no attribute 'splitlines'
又是Twisted 惹的禍,但我記得有把ubuntu關掉。
先看資料夾掛載在哪了。
docker inspect old-scrapyd
查看mount的位置(Fig.2)
(Fig.2)
該說好運還是壞運,看了一下先前的文章,連環境對應的指令都寫在上面了XDDDD
3.掛載Container
sudo docker run -d --name=scrapydIII -p 6800:6800 -v ~/scrapyd:/var/lib/scrapyd rockyuan/scrapyd
但我記得裝完後還要裝一些其他的套件,這次記得把套件轉成一個docker image,避免未來還要重新裝一次。
其實應該是要把twisted的自動更新關掉才對,上次關了ubuntu的自動更新。看來是沒用。
4.進入docker容器 ([DOCKER]常用指令大集合)
docker exec -it scrapydIII bash
5.升級軟體列表 ([DOCKER]容器內軟體安裝方式)
apk upgrade
apk update
apk search
6.安裝mongoDB,PostgresSQL([SCRAPYD]在SCRPAYD CONTAINER內安裝POSTGRESQL)
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
apk add postgresql-dev gcc python3-dev musl-dev
pip3 install psycopg2
pip3 install pymongo
7.安裝完成後重開機
然後……又掛了。問題依舊。卡在Twisted 的版本。
8.結論
再來不斷的Google終於發現問題所在…
Twisted跟ubuntu沒關係,可以看一下 Scrapy的架構一、Scrapy的Twisted引擎模型二、Scrapy的性能模型三、Scrapy架構組件數據流(Data flow)四、Scrapy架構
所以!!!只要我照著第六步驟,更新了pip3,就會導致scrapy的Twisted更新,只要一更新再重開Docker就開不起來了。
所以,應該怎麼做?先來看到 Twisted 19.2.0 assumes http headers are of string type ,下面的回覆有人寫說已經修復好這個錯誤了。
我們要做的就是更新Scrapy,pip的指令可參考 [PYTHON]PIP3常用指令列表
pip3 install -U scrapy
重開機試試看,收工~~!!!
ref .
0 意見:
張貼留言