scrapy - 将 Scrapy 项目部署到远程 Scrapyd 服务报错
问题描述
我试图将一个测试 Scrapy 项目部署到远程 Scrapyd 服务器。我在客户端收到以下错误消息。
curl http://IP:6800/addversion.json -d project=test_project -d spider=quotes
{"status": "error", "message": "'version'", "node_name": "serverName"}
服务器端的错误消息
2018-11-13T12:22:22+0000 [_GenericHTTPChannelProtocol,0,IP Address] Unhandled Error
Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/twisted/web/http.py", line 2190, in allContentReceived
req.requestReceived(command, path, version)
File "/usr/lib64/python2.7/site-packages/twisted/web/http.py", line 917, in requestReceived
self.process()
File "/usr/lib64/python2.7/site-packages/twisted/web/server.py", line 199, in process
self.render(resrc)
File "/usr/lib64/python2.7/site-packages/twisted/web/server.py", line 259, in render
body = resrc.render(self)
--- <exception caught here> ---
File "/usr/lib/python2.7/site-packages/scrapyd/webservice.py", line 21, in render
return JsonResource.render(self, txrequest).encode('utf-8')
File "/usr/lib/python2.7/site-packages/scrapyd/utils.py", line 20, in render
r = resource.Resource.render(self, txrequest)
File "/usr/lib64/python2.7/site-packages/twisted/web/resource.py", line 250, in render
return m(request)
File "/usr/lib/python2.7/site-packages/scrapyd/webservice.py", line 83, in render_POST
version = txrequest.args[b'version'][0].decode('utf-8')
exceptions.KeyError: 'version'
我检查了客户端和服务器端,Scrapy 版本都是 1.5.1。python版本是2.7.*
解决方案
您之前显示的示例curl
命令不应该工作。根据文档,您还需要:
- 一个
version
争论,这被认为是您现在遇到的问题的原因。 egg
包含实际项目代码的参数,否则scrapyd
仅传入项目名称和蜘蛛名称时将无法接收。
推荐阅读
- angular - 在 app.component.ts 中的 init 上运行函数
- java - 从tomcat java运行Webdriver
- java - TOTP / HOTP / HmacSHA256 与 Java 中的无符号字节密钥
- mysql - Hack : 将数据从 pi3 发送到服务器云
- angular - 在 Angular 上将样式作为模块导入
- javascript - 如果日期更多是页面加载时定义的日期,如何添加类
- android - 无法在最新的 android studio 中解决依赖问题。为什么以及最新的android studio中的问题是什么
- api - 在 softlayer 上配置网络网关时无法过滤具有服务器的数据中心
- mysql - MySQL触发器在插入另一个表后更新一个表中的字段
- python - 创建一个包含不同行的项目的列表