scrapyd部署按scrapyd客户端显示0个spider

scrapyd部署按scrapyd客户端显示0个spider,scrapy,scrapy-spider,Scrapy,Scrapy Spider,我发现我的问题很像。我也尝试了几次被接受的答案,但它对我不起作用,所以我来寻求一些帮助 项目目录为timediff_crawler,目录树视图为: timediff_crawler/ ├── scrapy.cfg ├── scrapyd-deploy ├── timediff_crawler │   ├── __init__.py │   ├── items.py │   ├── pipelines.py │   ├── settings.py │   ├── 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
...
1.1开始,没关系 1.2编辑scrapy.cfg 1.3部署项目 1.4问题 回答显示蜘蛛的数量是0,实际上我有大约10只蜘蛛

我按照这篇文章中的建议,删除所有项目、版本和目录(包括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
...

所以我不知道出了什么问题,请帮助并提前感谢

spider应位于
spider
的文件夹中,而不是子文件夹中

下面是我的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    

spider应该位于
spider
的文件夹中,而不是子文件夹中

下面是我的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    

感谢@LearnAWK的建议,问题是由
settings.py中的以下配置引起的:

LOG_STDOUT = True

实际上我不知道为什么这个配置会影响scrapyd的结果。

多亏@LearnAWK的建议,这个问题是由
settings.py中的以下配置引起的:

LOG_STDOUT = True

实际上,我不知道为什么这个配置会影响scrapyd的结果。

这是对这个线程的一个延迟回复,但我相信我已经找到了为什么在向scrapyd提交一个新的项目版本时,报告了0个spider

在我的例子中,我的spider有很多依赖项——Redis、Elasticsearch、certifi(用于使用SSL连接到ES)等。在不同的机器(生产系统)上运行Scrapyd时,您必须准确地复制Python依赖项。在本地计算机上,如果相同的Python virtualenv处于活动状态,则不会遇到此问题

我发现,使用标准的scrapy教程,我可以成功地向Scrapyd添加新的项目版本。从那时起,我开始剥离并注释我的爬行器中的代码行和导入,直到我能够成功地将它们添加到Scrapyd。当我可以通过取消一个导入的注释来让scrapyd deploy报告0个spider时,我意识到这是一个依赖性问题

希望这能帮助其他有同样问题的人


如果存在失败的依赖项,那么在部署响应中返回scrapyd报告将非常好

这是对这个帖子的一个延迟回复,但我相信我已经找到了为什么在向Scrapyd提交一个新的项目版本时,0个spider被报告回来了

在我的例子中,我的spider有很多依赖项——Redis、Elasticsearch、certifi(用于使用SSL连接到ES)等。在不同的机器(生产系统)上运行Scrapyd时,您必须准确地复制Python依赖项。在本地计算机上,如果相同的Python virtualenv处于活动状态,则不会遇到此问题

我发现,使用标准的scrapy教程,我可以成功地向Scrapyd添加新的项目版本。从那时起,我开始剥离并注释我的爬行器中的代码行和导入,直到我能够成功地将它们添加到Scrapyd。当我可以通过取消一个导入的注释来让scrapyd deploy报告0个spider时,我意识到这是一个依赖性问题

希望这能帮助其他有同样问题的人


如果存在失败的依赖项,那么在部署响应中返回scrapyd报告将非常好

开发环境与生产环境不同。Scrapyd找不到其他类。尝试将相关类或模块移动到spider文件夹下。然后再次给出正确的参考

要定义有问题的引用,可以尝试逐个注释掉引用,然后尝试scrapy deploy

├── Myapp
│ └── 蜘蛛网
│ ├── bbc_spider.py

│── Model.py

在开发环境中,这是可行的,但在scrapyd部署之后可能不行。因为bbc_spider.py无法访问model.py。
如果愿意,请将model.py移动到spider文件夹下。我解决了这样的问题。

开发环境不同于生产环境。Scrapyd找不到其他类。尝试将相关类或模块移动到spider文件夹下。然后再次给出正确的参考

要定义有问题的引用,可以尝试逐个注释掉引用,然后尝试scrapy deploy

├── Myapp
│ └── 蜘蛛网
│ ├── bbc_spider.py

│── Model.py

在开发环境中,这是可行的,但在scrapyd部署之后可能不行。因为bbc_spider.py无法访问model.py。
如果愿意,请将model.py移动到spider文件夹下。我解决了这样的问题。

你能分享你的设置文件吗?创建一个pastebin@eLRuLL,此处:尝试将您的
SPIDER\u模块更改为您的SPIDER所在的路径:例如
['timediff\u crawler.SPIDER.prod.job']
@eLRuLL我刚刚重试,但无效。我还尝试将所有爬行器源文件直接放入
timediff\u crawler/spider
中,但也不起作用。当您运行
scrapy list
时,它是否列出了您的爬行器?您可以共享您的设置文件吗?创建一个pastebin@eLRuLL,此处:尝试将您的
SPIDER\u模块更改为您的SPIDER所在的路径:例如
['timediff\u crawler.SPIDER.prod.job']
@eLRuLL我刚刚重试,但无效。我还尝试将所有spider源文件直接放入
timediff\u crawler/spider
中,但也无法运行
LOG_STDOUT = True