运行scrapyd-deploy成功但Scrapy项目未部署到Scrapyd服务器如何解决?
Scrapyd部署后jobs页面无记录的遗漏配置排查步骤
- 检查服务端
scrapyd.conf配置- 确认
eggs_dir指定的存储路径存在,且Scrapyd运行进程对该路径有读写权限,部署的项目egg包默认会存储到该目录,权限不足会出现部署提示成功但实际未写入的问题 - 确认
bind_address配置为0.0.0.0或服务器对外IP10.2.1.54,若绑定为127.0.0.1会导致外部访问状态不一致
- 确认
- 检查本地项目
scrapy.cfg配置- 确认
[deploy]段下的url参数值为http://10.2.1.54:6800/,若误填为http://127.0.0.1:6800会导致项目实际部署到本地Scrapyd实例,而非目标服务器 - 确认执行部署命令时指定了项目名,完整命令格式为
scrapyd-deploy <部署段名称> -p <自定义项目名>,未指定项目名会导致服务端无法识别对应项目
- 确认
- 部署结果校验
- 部署完成后先调用接口确认项目是否部署成功,执行
curl http://10.2.1.54:6800/listprojects.json查看返回结果的projects列表是否包含你部署的项目 - 若列表存在对应项目,说明部署成功,jobs页面无记录是因为还未运行过爬虫任务,执行
curl http://10.2.1.54:6800/schedule.json -d project=<你的项目名> -d spider=<你的爬虫名>触发任务后即可看到任务记录 - 若列表不存在对应项目,说明部署实际未成功,查看Scrapyd服务端日志(默认路径
/var/log/scrapyd/)排查报错,常见原因为项目依赖缺失、egg包解析失败
- 部署完成后先调用接口确认项目是否部署成功,执行
- 服务实例校验
- 执行
ps aux | grep scrapyd确认服务器上Scrapyd进程正常运行,无多个Scrapyd进程占用6800端口的情况,避免部署和访问的不是同一个服务实例
- 执行
内容的提问来源于stack exchange,提问作者Asad Mehmood
相关产品推荐
相关产品推荐

