Scrapyd部署分布式爬虫(一)

Scrapyd是一个部署和管理Scrapy爬虫的工具,它可以通过一系列HTTP接口实现远程部署、启动、停止和删除爬虫程序。Scrapyd还可以管理多个爬虫项目,每个项目可以上传多个版本,但只执行最新的版本。


Scrapyd的安装及运行


pip install scrapyd

安装完毕之后,Scrapyd在运行时需要读取/etc/scrapyd/scrapyd.conf文件,由于在Scrapyd 1.2 版本之后不会自动创建/etc/scrapyd/scrapyd.conf文件,需要我们自行添加。


配置文件


[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 10 #默认为4
finished_to_keep = 100
poll_interval = 5.0
bind_address = 0.0.0.0 #默认为127.0.0.1,修改后使外网可以访问
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
daemonstatus.json = scrapyd.webservice.DaemonStatus

这里介绍几个重要的配置项:

  • max_proc_per_cpu:默认为4,即每个cpu最多运行4个Scrapy项目。
  • bind_address:访问Scrapyd服务的ip地址,默认为127.0.0.1,可修改成0.0.0.0。
  • http_port:访问Scrapyd服务的端口,默认为6800。

开启Scrapyd


在终端使用scrapyd命令启动。打开管理界面地址:http:127.0.0.1:6800/。


Scrapyd的API介绍


1、启动爬虫任务(schedule.json接口)

curl http://localhost:6800/schedule.json -d project=myproject -d spider=spider_name

这里有两个参数,project表示项目名,spider表示Spider名。

2、停止爬虫任务(cancel.json接口)

curl http://localhost:6800/cancel.json -d project=myproject -d job=job_id

这里有两个参数,其中job参数表示任务id号。

3、检查服务的负载状态(daemonstatus.json接口)

curl http://localhost:6800/daemonstatus.json

4、取上传到此Scrapy服务器的项目列表(listprojects.json接口)

curl http://localhost:6800/listprojects.json

5、删除服务器上的项目(delproject.json接口

curl http://localhost:6800/delproject.json -d project=project_name

6、项目部署接口(addversion.json接口)

curl http://localhost:6800/addversion.json -F project=myproject -F version=01 egg=xxx.egg

执行scrapyd-deploy -l 测试scrapyd-deploy是否可以运行。

scrapyd-deploy 部署名称 -p 项目名称,该命令( scrapyd-deploy)通过读取scrapy项目目录下的配置文件scrapy.cfg来获取项目信息。每一个scrapy.cfg对于scrapyd来说都是一个target。所以我们需要先编辑scrapy.cfg文件。如果你只有一个deploy配置那么可以不写NAME,但是如果你需要在多个远程服务器或者多个scrapyd进程上部署的话,应该为不同的deploy命名,方便部署。

这里有三个参数,其中version为项目版本,egg表示包含项目代码的egg文件。更多可看官方文档。

你可能感兴趣的:(Scrapy)