scapyd scrapyd-client scrapy使用ht
基本概念
scrapyd
-
scrapyd是使用http方式,管理维护scrapy工程应用服务器
-
管理scrapy工程部署,可以上传部署工程
-
管理spider,启动,停止,删除spider
-
管理scrapy日志,数据输出
-
官方文档url
scrapyd-client
-
使用scrapyd-client,打包scrapy工程
-
scrapyd-deploy 上传scrapy工程到scrapd应用服务器
-
github 官网url
安装过程
非Ubuntu,以下是mac平台的安装过程
-
pip install scrapyd
-
pip install scrapyd-client
scrapyd 配置
-
文档参考: configurations
-
mac平台下安装的scrapyd,默认没有生成配置文件,最好先手动配置好文件,以免使用过程中碰到莫名其妙的问题,本人走过弯路
-
配置过程按照官网所谓通俗的做法如下
sudo mkdir /mnt/scrapyd # 目录自己定
cd /mnt/scrapyd/
mkdir eggs
mkdir logs
mkdir items
mkdir dbs
sudo mkdir /etc/scrapyd/
cd /etc/scrapyd/
vi scrapyd.conf 配置如下:
[scrapyd]
eggs_dir = /mnt/scrapyd/eggs
logs_dir = /mnt/scrapyd/logs
logs_filename = {spider}-{Y}{m}{d}.log
items_dir =
jobs_to_keep = 5
dbs_dir = /mnt/scrapyd/dbs
max_proc = 0
max_proc_per_cpu = 4
finished_to_keep = 100
poll_interval = 5
bind_address = 0.0.0.0
http_port = 6100
debug = off
runner = scrapyd.runner
application = scrapyd.app.application
launcher = scrapyd.launcher.Launcher
webroot = scrapyd.website.Root
[services]
schedule.json = scrapyd.webservice.Schedule
cancel.json = scrapyd.webservice.Cancel
addversion.json = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json = scrapyd.webservice.ListSpiders
delproject.json = scrapyd.webservice.DeleteProject
delversion.json = scrapyd.webservice.DeleteVersion
listjobs.json = scrapyd.webservice.ListJobs
启动服务:/usr/bin/nohup /usr/local/bin/scrapyd > /dev/null 2>&1 &
scrapy项目scrapy.cfg 配置
- 配置如下:
[settings]
default = get_app_analytics.settings
[deploy:ios_analytics]
url = http://localhost:6800/
project = ios_get_app_analytics
-
deploy:target 若只有一个工程target可以省略,不管是否只有一个工程,统一格式都按照这么写
-
project:scrapy工程名
scrapyd-client 使用scrapy-deploy部署
-
cd 切换到scrapy.cfg所在目录
-
执行 scrapyd-deploy -v r1.0.0 ios_analytics -p ios_get_app_analytics
注意事项
ERROR: Error caught on signal handler: <bound method ?
- 原因:没有scrapyd.conf配置文件,scrapyd运行采用默认的配置,出错。stackflow上有解释是与FeedExports功能相关,但是官方文档默认FeedExports是禁用的,应该不受影响。无法找出具体原因,之前出问题是没有配置scrapyd.conf急于上线,手动增加配置文件后,修复问题。
unexpected keyword argument ‘_job’
-
原因:继承Spider,重写init()函数,没有使用与接口同样的格式,
-
解决:注意必须要有**kwargs,参数,此参数用来向Spider传递参数
使用例子
普通调度
curl http://localhost:6800/schedule.json -d project=ios_get_app_analytics -d spider=get_app_detail
传参数调度
curl http://localhost:6800/schedule.json -d project=ios_get_app_analytics -d spider=get_app_detail -d setting=APP_USER=xxx@icloud.com -d setting=APP_PASSWORD=haha