我发现我的问题与scrapyd deploy shows 0 spiders非常相似。我也多次尝试过接受的答案,但它对我没有用,所以我来寻求帮助。
项目目录是timediff_crawler,目录的树视图是:
timediff_crawler/
├── scrapy.cfg
├── scrapyd-deploy
├── timediff_crawler
│ ├── __init__.py
│ ├── items.py
│ ├── pipelines.py
│ ├── settings.py
│ ├── spiders
│ │ ├── __init__.py
│ │ ├── prod
│ │ │ ├── __init__.py
│ │ │ ├── job
│ │ │ │ ├── __init__.py
│ │ │ │ ├── zhuopin.py
│ │ │ ├── rent
│ │ │ │ ├── australia_rent.py
│ │ │ │ ├── canada_rent.py
│ │ │ │ ├── germany_rent.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── korea_rent.py
│ │ │ │ ├── singapore_rent.py
...
(crawl_env)web@ha-2:/opt/crawler$ scrapyd
2015-11-11 15:00:37+0800 [-] Log opened.
2015-11-11 15:00:37+0800 [-] twistd 15.4.0 (/opt/crawler/crawl_env/bin/python 2.7.6) starting up.
2015-11-11 15:00:37+0800 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2015-11-11 15:00:37+0800 [-] Site starting on 6800
...
[settings]
default = timediff_crawler.settings
[deploy:ha2-crawl]
url = http://localhost:6800/
project = timediff_crawler
(crawl_env)web@ha-2:/opt/crawler/timediff_crawler$ ./scrapyd-deploy -l
ha2-crawl http://localhost:6800/
(crawl_env)web@ha-2:/opt/crawler/timediff_crawler$ ./scrapyd-deploy ha2-crawl -p timediff_crawler
Packing version 1447229952
Deploying to project "timediff_crawler" in http://localhost:6800/addversion.json
Server response (200):
{"status": "ok", "project": "timediff_crawler", "version": "1447229952", "spiders": 0, "node_name": "ha-2"}
响应显示蜘蛛数为0,实际上我有大约10只蜘蛛。
我按照这篇文章scrapyd deploy shows 0 spiders中的建议,删除了所有项目,版本,目录(包括build / eggs / project.egg-info setup.py)并尝试再次部署,但它没有'工作时,蜘蛛的数量始终为0.
我验证了egg文件,输出显示似乎没问题:
(crawl_env)web@ha-2:/opt/crawler/timediff_crawler/eggs/timediff_crawler$ unzip -t 1447229952.egg
Archive: 1447229952.egg
testing: timediff_crawler/pipelines.py OK
testing: timediff_crawler/__init__.py OK
testing: timediff_crawler/items.py OK
testing: timediff_crawler/spiders/prod/job/zhuopin.py OK
testing: timediff_crawler/spiders/prod/rent/singapore_rent.py OK
testing: timediff_crawler/spiders/prod/rent/australia_rent.py OK
...
所以我不知道出了什么问题,请提前帮助和谢谢!
答案 0 :(得分:4)
感谢@ LearnAWK的建议,问题是由settings.py
中的以下配置引起的:
LOG_STDOUT = True
实际上我并不知道为什么这种配置会影响scrapyd的结果。
答案 1 :(得分:0)
蜘蛛应位于spiders
的文件夹中,而不是子文件夹。
以下是我的scrapy项目的基本文件夹中的目录树。你的问题类似吗?
my_scrapy_project/
├── CAPjobs
│ └── spiders
│ └── oldspiders
├── build
│ ├── bdist.macosx-10.9-x86_64
│ └── lib
│ └── CAPjobs
│ └── spiders
├── db
├── dbs
├── eggs
│ └── CAPjobs
├── items
│ └── CAPjobs
│ ├── spider1
│ ├── spider2
│ └── spider3
├── logs
│ └── CAPjobs
│ ├── spider1
│ ├── spider2
│ └── spider3
└── project.egg-info
答案 2 :(得分:0)
这是对这个帖子的迟到回复,但我相信我弄清楚为什么在向Scrapyd提交新项目版本时,报告了0个蜘蛛。
在我的情况下,我的蜘蛛有很多依赖项 - Redis,Elasticsearch,certifi(使用SSL连接到ES),等等。在不同的机器(生产系统)上运行Scrapyd,你必须完全复制你的Python依赖项。在本地计算机上,如果您使用相同的Python virtualenv活动,则不会遇到此问题。
我发现,使用标准的scrapy教程,我可以成功地向Scrapyd添加一个新的项目版本。从那里开始,我开始剥离并在我的蜘蛛中注释出代码和导入行,直到我能够成功地将它们添加到Scrapyd。当我可以通过取消注释单个导入来让scrapyd-deploy报告0蜘蛛时,我突然意识到这是一个依赖性问题。
希望这可以帮助其他人遇到同样的问题。
如果存在失败的依赖项,那么在部署响应中返回scrapyd报告会非常好。
答案 3 :(得分:0)
开发环境与生产不同。 Scrapyd找不到其他课程。尝试在spider文件夹下移动相关的类或模块。然后再次给出正确的参考。
为了定义有问题的引用,您可以尝试逐个注释掉引用并尝试scrapy-deploy
├──Myapp
│└──蜘蛛
│├──bbc_spider.py
│──Tode.py
在开发环境中,这可以工作,但在使用scrapyd进行部署后,它可能不会。因为bbc_spider.py无法访问model.py。 如果愿意,可以将model.py下移到spider文件夹中。我解决了这样的问题。