Telnet终端(Telnet Console)

Scrapy提供了内置的telnet终端,以供检查,控制Scrapy运行的进程。telnet仅仅是一个运行在Scrapy进程中的普通python终端。因此您可以在其中做任何事。

telnet终端是一个自带的Scrapy扩展 。该扩展默认为启用,不过您也可以关闭。关于扩展的更多内容请参考Telnet console 扩展

如何访问telnet终端

telnet终端监听设置中定义的TELNETCONSOLE_PORT ,默认为 6023 。访问telnet请输入:

  1. telnet localhost 6023
  2. >>>

Windows及大多数Linux发行版都自带了所需的telnet程序。

telnet终端中可用的变量

telnet仅仅是一个运行在Scrapy进程中的普通python终端。因此您可以做任何事情,甚至是导入新终端。

telnet为了方便提供了一些默认定义的变量:

快捷名称描述
crawlerScrapy Crawler (scrapy.crawler.Crawler 对象)
engineCrawler.engine属性
spider当前激活的爬虫(spider)
slotthe engine slot
extensions扩展管理器(manager) (Crawler.extensions属性)
stats状态收集器 (Crawler.stats属性)
settingsScrapy设置(setting)对象 (Crawler.settings属性)
est打印引擎状态的报告
prefs针对内存调试 (参考 调试内存溢出)
ppprint.pprint 函数的简写
hpy针对内存调试 (参考 调试内存溢出)

Telnet console usage examples

下面是使用telnet终端的一些例子:

查看引擎状态

在终端中您可以使用Scrapy引擎的 est() 方法来快速查看状态:

  1. telnet localhost 6023
  2. >>> est()
  3. Execution engine status
  4.  
  5. time()-engine.start_time : 8.62972998619
  6. engine.has_capacity() : False
  7. len(engine.downloader.active) : 16
  8. engine.scraper.is_idle() : False
  9. engine.spider.name : followall
  10. engine.spider_is_idle(engine.spider) : False
  11. engine.slot.closing : False
  12. len(engine.slot.inprogress) : 16
  13. len(engine.slot.scheduler.dqs or []) : 0
  14. len(engine.slot.scheduler.mqs) : 92
  15. len(engine.scraper.slot.queue) : 0
  16. len(engine.scraper.slot.active) : 0
  17. engine.scraper.slot.active_size : 0
  18. engine.scraper.slot.itemproc_size : 0
  19. engine.scraper.slot.needs_backout() : False

暂停,恢复和停止Scrapy引擎

暂停:

  1. telnet localhost 6023
  2. >>> engine.pause()
  3. >>>

恢复:

  1. telnet localhost 6023
  2. >>> engine.unpause()
  3. >>>

停止:

  1. telnet localhost 6023
  2. >>> engine.stop()
  3. Connection closed by foreign host.

Telnet终端信号

scrapy.telnet.updatetelnet_vars(_telnet_vars)

在telnet终端开启前发送该信号。您可以挂载(hook up)该信号来添加,移除或更新telnet本地命名空间可用的变量。您可以通过在您的处理函数(handler)中更新 telnetvars 字典来实现该修改。

参数:telnet_vars (_dict) – telnet变量的字典

Telnet设定

以下是终端的一些设定:

TELNETCONSOLE_PORT

Default: [6023, 6073]

telnet终端使用的端口范围。如果设为 None0 ,则动态分配端口。

TELNETCONSOLE_HOST

默认: '127.0.0.1'

telnet终端监听的接口(interface)。