semvec/pypi-packages huggingface dataset:
spider-task-monitor 0.0.7
对于爬虫任务调度的监控

爬虫任务的监控

- 针对爬虫调度任务的监控，为每个任务的不同批次设置唯一的标识，作为redis的key，并记录相应信息（队列长度）
- 当每个种子爬取完毕时，需向监控系统发送此次爬取的状态（成功/失败/重试，及爬取时间），监控系统会作记录
- 在次日的早晨，报表调度器会将前一天的监控信息汇总入库，并给相关人员发送监控报表

代码结构：
<pre>
    spider_task_monitor
    |--- common         通用库
    ||---- config.py        一些配置信息
    ||---- constants.py     一些常量
    ||---- util.py          一些通用函数
    |--- core           核心库
    ||---- dao.py            持久层的操作
    ||---- mail.py           邮件系统
    ||---- task_dao.py       任务监控的持久层细节
    |--- monitor        监控库
    ||---- monitor.py       监控类
    ||---- report.py        报表类
</pre>

具体使用：
- 由于这里使用redis临时存储监控信息，所以需配置好 `redis_config`
<pre>
    redis_config = {
        'host': host,
        'port': port,
        'password': pwd,
        'db': db (可不设置，监控会强制设置为db14)
    }

    mail_config = {
        'host': host,
        'port': port,
        'user': user,
        'password': pwd
    }
</pre>
- 当启动一个批次的任务时，创建监控队列
<pre>
    from spider_task_monitor.monitor import monitor 
    m = monitor.Monitor(bis_name, task_name, redis_config, mail_config) 
    # 初始化当前任务的配置信息，如失败率上限，种子的平均爬取时长上限，报警邮件的收件人 
    m.init_config(failure_rate_up=.05, avg_time_up=5.0, warn_addresses=['example@domain.com']) 
    # 版本号遵循一个默认规则，`%Y/%m/%d %H:%M`，即 `年/月/日 时:分` 
    version = m.cons_version() 
    # 创建监控队列 
    m.create(version, queue_length) # 版本号，队列长度
</pre>
- 一个种子爬取完成时，发送当前种子的完成状态
<pre>
    # 版本号，爬取结果（成功/失败/重试），爬取时长
    m.send(version, crawl_time=1.68) # 默认成功
    m.send(version, data_result=monitor.DataResult.FAILED, crawl_time=1.5)
    m.send(version, data_result=monitor.DataResult.RETRY, crawl_time=2.3)
</pre>