如何简单高效地部署和监控分布式爬虫项目

栏目: Python · 发布时间: 6年前

内容简介:初级用户:专业用户:通过浏览器访问

初级用户:

  • 只有一台开发主机
  • 能够通过 Scrapyd-client 打包和部署 Scrapy 爬虫项目,以及通过 Scrapyd JSON API 来控制爬虫,感觉 命令行操作太麻烦 ,希望能够通过浏览器直接部署和运行项目

专业用户:

  • 有 N 台云主机,通过 Scrapy-Redis 构建分布式爬虫
  • 希望集成身份认证
  • 希望在页面上直观地查看所有云主机的运行状态
  • 希望 能够自由选择部分云主机,一键部署和运行爬虫项目,实现集群管理
  • 希望自动执行日志分析,以及爬虫进度可视化
  • 希望在出现特定类型的异常日志时能够及时通知用户,包括自动停止当前爬虫任务

安装和配置

  1. 所有主机都已经安装和启动 Scrapyd
  2. 开发主机或任一台主机安装 ScrapydWebpip install scrapydweb
  3. 运行命令 scrapydweb -h将在当前工作目录生成 scrapydweb_settings.py 配置文件
  4. 启用 HTTP 基本认证
ENABLE_AUTH = True
USERNAME = 'username'
PASSWORD = 'password'
复制代码
  1. 添加 Scrapyd server,支持字符串和元组两种配置格式,支持添加认证信息和分组/标签
SCRAPYD_SERVERS = [
    '127.0.0.1',
    # 'username:password@localhost:6801#group',
    ('username', 'password', 'localhost', '6801', 'group'),
]
复制代码
  1. 通过运行命令 scrapydweb 启动 ScrapydWeb

访问 Web UI

通过浏览器访问 http://127.0.0.1:5000 ,输入认证信息登录

  • Overview 页面自动输出所有 Scrapyd server 的运行状态
  • 通过分组和过滤可以自由选择若干台 Scrapyd server,调用 Scrapyd 提供的所有 JSON API, 实现一次点击,批量执行
    如何简单高效地部署和监控分布式爬虫项目

部署项目

  • 支持指定若干台 Scrapyd server 部署项目
  • 通过配置 SCRAPY_PROJECTS_DIR 指定 Scrapy 项目开发目录, ScrapydWeb 将自动列出该路径下的所有项目,自动打包和部署指定项目
    如何简单高效地部署和监控分布式爬虫项目
  • 如果 ScrapydWeb 并非运行于当前开发主机,除了支持上传常规的 egg 文件,也可以将整个项目文件夹添加到 zip/tar/tar.gz 压缩文件后直接上传即可
    如何简单高效地部署和监控分布式爬虫项目

运行爬虫

  • 通过下拉框直接选择 project,version 和 spider
  • 支持传入 Scrapy settings 和 spider arguments
  • 同样支持指定若干台 Scrapyd server 运行爬虫
    如何简单高效地部署和监控分布式爬虫项目

日志分析和可视化

  • ScrapydWeb 默认在后台定时自动读取和分析 Scrapy log 文件并生成 Stats 页面
    如何简单高效地部署和监控分布式爬虫项目
  • 爬虫进度可视化
    如何简单高效地部署和监控分布式爬虫项目

邮件通知

  1. 配置邮箱认证信息
SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 465
SMTP_OVER_SSL = True
SMTP_CONNECTION_TIMEOUT = 10

FROM_ADDR = 'username@qq.com'
EMAIL_PASSWORD = 'password'
TO_ADDRS = ['username@qq.com']
复制代码
  1. 设置邮件工作时间和定时通知间隔,以下示例为:每隔1小时或某一任务完成时,并且当前时间是工作日的9点,12点和17点, ScrapydWeb 将会发送邮件告知当前运行任务的统计信息
EMAIL_WORKING_DAYS = [1, 2, 3, 4, 5]
EMAIL_WORKING_HOURS = [9, 12, 17]
ON_JOB_RUNNING_INTERVAL = 3600
ON_JOB_FINISHED = True
复制代码
  1. 基于后台定时执行日志分析, ScrapydWeb 提供多种 log 类型触发器及其阈值设置 ,包括 'CRITICAL', 'ERROR', 'WARNING', 'REDIRECT', 'RETRY', 'IGNORE'等。以下示例为:当发现3条或3条以上的 critical 级别的 log 时 自动停止当前任务 ,如果当前时间在邮件工作时间内,则同时发送通知邮件。
LOG_CRITICAL_THRESHOLD = 3
LOG_CRITICAL_TRIGGER_STOP = True
LOG_CRITICAL_TRIGGER_FORCESTOP = False
...
LOG_IGNORE_TRIGGER_FORCESTOP = False
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Nature of Code

The Nature of Code

Daniel Shiffman / The Nature of Code / 2012-12-13 / GBP 19.95

How can we capture the unpredictable evolutionary and emergent properties of nature in software? How can understanding the mathematical principles behind our physical world help us to create digital w......一起来看看 《The Nature of Code》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具