扫码一下
查看教程更方便
Telnet 控制台是一个运行在Scrapy进程内部的Python shell,用于检查和控制Scrapy运行的进程。
可以使用以下命令访问 telnet 控制台
$ telnet localhost 6023
基本上,telnet 控制台列在 TCP 端口中,这在 TELNETCONSOLE_PORT
设置中有描述。
下表给出的一些默认变量用作快捷方式
序号 | 快捷方式 | 描述 |
---|---|---|
1 | crawler | 这是指 Scrapy 爬虫(scrapy.crawler.Crawler )对象。 |
2 | engine | 这是指 Crawler.engine 属性。 |
3 | spider | 这是指活跃的蜘蛛。 |
4 | slot | 这是指内核槽。 |
5 | extensions | 这是指扩展管理器 (Crawler.extensions ) 属性。 |
6 | stats | 这是指统计信息收集器 (Crawler.stats ) 属性。 |
7 | setting | 这是指 Scrapy 设置对象 (Crawler.settings ) 属性。 |
8 | est | 这是指打印内核状态报告。 |
9 | prefs | 这是指用于调试的内存。 |
10 | p | 这是指 pprint.pprint 函数的快捷方式。 |
11 | hpy | 这是指内存调试。 |
以下是使用 Telnet 控制台说明的一些示例。
要暂停 Scrapy 引擎,请使用以下命令
$ telnet localhost 6023
>>> engine.pause()
>>>
要恢复 Scrapy 引擎,请使用以下命令
telnet localhost 6023
>>> engine.unpause()
>>>
要停止 Scrapy 引擎,请使用以下命令
telnet localhost 6023
>>> engine.stop()
Connection closed by foreign host.
Telnet控制台使用 est()
方法查看Scrapy引擎状态如下代码所示
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
我们可以使用 telnet 控制台信号来添加、更新或删除 telnet 本地命名空间中的变量。 要执行此操作,我们需要在处理程序中添加 telnet_vars
字典。
scrapy.extensions.telnet.update_telnet_vars(telnet_vars)
参数
telnet_vars (dict)
其中,dict是包含telnet变量的字典。
下表显示了控制 Telnet 控制台行为的设置
序号 | 设置 | 描述 | 默认值 |
---|---|---|---|
1 | TELNETCONSOLE_PORT | 这是指 telnet 控制台的端口范围。 如果设置为无,则端口将被动态分配。 | [6023, 6073] |
2 | TELNETCONSOLE_HOST | 这是指 telnet 控制台应该监听的接口。 | '127.0.0.1' |