您的位置:首页 > 理论基础 > 计算机网络

scapyd scrapyd-client scrapy使用http调度spider.md

2016-06-21 23:16 567 查看
文档还是看英文的好,看中文的有些也是一知半解,反而会误解

基本概念

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   # 目录自己定义

chown -R cdz /mnt/scrapyd

cd /mnt/scrapyd/

mkdir eggs

mkdir logs

mkdir items

mkdir dbs

sudo mkdir /etc/scrapyd/

chown -R cdz /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   = 6800

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


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 ios_analytics -p ios_get_app_analytics –v r1.0.0

注意事项

ERROR: Error caught on signal handler: <bound method ?

原因:没有scrapyd.conf配置文件,scrapyd运行采用默认的配置,出错。stackflow上有解释是与FeedExports功能相关,但是官方文档默认FeedExports是禁用的,应该不受影响。无法找出具体原因,之前出问题是没有配置scrapyd.conf急于上线,手动增加配置文件后,修复问题。

unexpected keyword argument ‘_job’

原因:继承Spider,重写init()函数,没有使用与接口同样的格式,函数格式:def init(self, callbackUrl=None, **kwargs): 注意要有**kwargs,scrapyd会调用spider,通过kwargs传递_job参数

解决:注意必须要有**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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scrapyd