3

我想知道scrapy运行时发生了什么,我如何监控状态?

4

2 回答 2

3

有两种方法。第一种方法,这里是官方文档中的一个例子。

telnet localhost 6023
>>> est()
Execution engine status
time()-engine.start_time : 8.62972998619
engine.has_capacity() :         False
len(engine.downloader.active) :         16
engine.scraper.is_idle() :      False
engine.spider.name :        followall
engine.spider_is_idle(engine.spider) :      False
engine.slot.closing :       False
len(engine.slot.inprogress) :       16
len(engine.slot.scheduler.dqs or []) :      0
len(engine.slot.scheduler.mqs) :        92
len(engine.scraper.slot.queue) :        0
len(engine.scraper.slot.active) :       0
engine.scraper.slot.active_size :       0
engine.scraper.slot.itemproc_size :         0
engine.scraper.slot.needs_backout() :   False

更多信息请参考官方文档。

第二种方法似乎更简单一些。您可以通过以下方法获取爬虫的状态:

    self.crawler.stats.get_stats() 
or 
    spider.crawler.stats.get_stats()

因此,只需根据需要打印出状态即可。

于 2014-10-13T12:22:38.130 回答
0

还有一个第三方扩展来监控scrapy状态

这个项目曾经是在scrapy中构建的,现在它是独立的。scrapy-jsonrc 通过 JSON-RPC 控制和监控正在运行的 Scrapy 网络爬虫,并具有网络服务。

旧版本的scrapy文档中的Web服务

该项目使用 StatcollectorMiddleware 存储当前对 redis 的请求的统计信息。并且还有一个网络服务。

于 2018-04-14T18:49:30.423 回答