踩了 5-6個小時的坑,各類測試。人要沒了。不過結果我已經滿意了。
這篇文章是對 https://segmentfault.com/a/11... 的完善與排初BUG!python
我用的Docker (我記得以前不用docker的時候scrapyd的配置文件好像是默認的 0.0.0.0)
可是我發現 Docker容器裏面 默認是 bind 127.0.0.1 (真是 f--k了.. 弄了好幾個小時沒發現)
若是你用的docker, 先在Docker 同級目錄下新建一個 default_scrapyd.conf
而後寫入以下配置(不用猶豫,所有複製進去便可):web
[scrapyd] eggs_dir = eggs logs_dir = logs items_dir = jobs_to_keep = 5 dbs_dir = dbs max_proc = 0 max_proc_per_cpu = 4 finished_to_keep = 100 poll_interval = 5.0 bind_address = 0.0.0.0 http_port = 6800 debug = off runner = scrapyd.runner application = scrapyd.app.application launcher = scrapyd.launcher.Launcher webroot = scrapyd.website.Root [services] schedule.json = scrapyd.webservice.Schedule cancel.json = scrapyd.webservice.Cancel addversion.json = scrapyd.webservice.AddVersion listprojects.json = scrapyd.webservice.ListProjects listversions.json = scrapyd.webservice.ListVersions listspiders.json = scrapyd.webservice.ListSpiders delproject.json = scrapyd.webservice.DeleteProject delversion.json = scrapyd.webservice.DeleteVersion listjobs.json = scrapyd.webservice.ListJobs daemonstatus.json = scrapyd.webservice.DaemonStatus
最後在你的Dockerfile中末尾寫入(視狀況而定。 每一個人的目錄結構都不一樣)docker
COPY default_scrapyd.conf /usr/local/lib/python3.6/site-packages/scrapyd/default_scrapyd.conf
scrapyd部署須要兩步:json
很明顯:2 是依賴 1 的。segmentfault
可是,docker-compose command: 只能運行一條命令。 我按照常理使用N種思想一想讓他支持多條命令:bash
最荒唐的命令以下:(我一直竊喜,覺得找到解決辦法了,就一直以這個命令爲軸作調試,測試。。。。)app
# command: # - /bin/bash # - -c # - | # scrapyd # scrapyd-deploy Cython_lin -p Baidu
這個命令有兩種結果(這兩種結果還tm是隨機的。 生無可戀):scrapy
到此爲止::::::: 我上面說的都是錯誤的方式!!!!!!!!!!!!!!
(差點一棵樹上勒到死, 既然docker-compose文件內部只能運行一條命令。那麼咱們拿外面去運行啊!!)
(思想已經絕望僵化的我, 此次是真的看見了但願,曙光)ide
docker-compose.yml文件裏面只寫:測試
command: scrapyd
而後保存退出, 而後執行 :
docker-compose up -d # 咱們須要讓 scrapyd啓動一會,才能夠啓動 scrapy-deploy的(等一小會就好了)
而後繼續執行:
docker-compose exec crawl scrapyd-deploy Cython_lin -p Baidu 特別注意!說明如下!(docker-compose命令有兩種方式): docker-compose exec 正確 docker-compose run 錯誤 (在外面千萬不要用這種 (固然我是說我這個業務))
也許有些錯誤很小, 可是當你懷疑變多的時候,腦海會出現海量解決問題的分支。而後機械排BUG, 最終生無可戀。。。。。其實有時不妨先冷靜下來, 而後專一,一槌定音。找出BUG!!!