scrapyd部署按scrapyd客户端显示0个spider
我发现我的问题很像。我也尝试了几次被接受的答案,但它对我不起作用,所以我来寻求一些帮助 项目目录为timediff_crawler,目录树视图为: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/
├── 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