Telnet Console

Scrapy带有内置的telnet控制台,用于检查和控制Scrapy运行过程. telnet控制台只是在Scrapy进程中运行的常规python shell,因此您可以执行任何操作.

telnet控制台是内置的Scrapy扩展 ,默认情况下已启用,但您也可以根据需要禁用它. 有关扩展本身的更多信息,请参见Telnet控制台扩展 .

Warning

通过公用网络使用telnet控制台并不安全,因为telnet不提供任何传输层安全性. 使用用户名/密码身份验证不会改变这一点.

预期用途是本地连接到运行的Scrapy Spider(蜘蛛进程和telnet客户端在同一台计算机上)或通过安全连接(VPN,SSH隧道)连接. 请避免在不安全的连接上使用telnet控制台,或者使用TELNETCONSOLE_ENABLED选项完全禁用它.

How to access the telnet console

telnet控制台侦听TELNETCONSOLE_PORT设置(默认为6023定义的TCP端口. 要访问控制台,您需要输入:

telnet localhost 6023
Trying localhost...
Connected to localhost.
Escape character is '^]'.
Username:
Password:
>>>

By default Username is scrapy and Password is autogenerated. The autogenerated Password can be seen on scrapy logs like the example below:

2018-10-16 14:35:21 [scrapy.extensions.telnet] INFO: Telnet Password: 16f92501e8a59326

可以使用设置TELNETCONSOLE_USERNAMETELNETCONSOLE_PASSWORD覆盖默认的用户名和密码.

Warning

用户名和密码仅提供有限的保护,因为telnet不使用安全传输-默认情况下,即使设置了用户名和密码,流量也不会加密.

您需要在Windows和大多数Linux发行版中默认安装的telnet程序.

Available variables in the telnet console

telnet控制台就像在Scrapy进程中运行的常规Python shell,因此您可以执行任何操作,包括导入新模块等.

但是,为方便起见,telnet控制台附带了一些默认变量:

Shortcut Description
crawler Scrapy Crawler( scrapy.crawler.Crawler对象)
engine Crawler.engine属性
spider 活跃的蜘蛛
slot 引擎插槽
extensions 扩展管理器(Crawler.extensions属性)
stats 统计收集器(Crawler.stats属性)
settings Scrapy设置对象(Crawler.settings属性)
est 打印引擎状态报告
prefs 用于内存调试(请参阅调试内存泄漏
p 一个快捷方式到的pprint.pprint功能
hpy 用于内存调试(请参阅调试内存泄漏

Telnet console usage examples

以下是您可以使用telnet控制台执行的一些示例任务:

View engine status

您可以使用Scrapy引擎的est()方法通过telnet控制台快速显示其状态:

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

Pause, resume and stop the Scrapy engine

暂停:

telnet localhost 6023
>>> engine.pause()
>>>

恢复:

telnet localhost 6023
>>> engine.unpause()
>>>

停止:

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

Telnet Console signals

scrapy.extensions.telnet.update_telnet_vars(telnet_vars)

在打开telnet控制台之前发送. 您可以连接到该信号以添加,删除或更新telnet本地名称空间中可用的变量. 为此,您需要在处理程序中更新telnet_vars字典.

Parameters: telnet_varsdict )– telnet变量的字典

Telnet settings

这些是控制telnet控制台行为的设置:

TELNETCONSOLE_PORT

Default: [6023, 6073]

用于telnet控制台的端口范围. 如果设置为None0 ,则使用动态分配的端口.

TELNETCONSOLE_HOST

Default: '127.0.0.1'

telnet控制台应侦听的接口

TELNETCONSOLE_USERNAME

Default: 'scrapy'

telnet控制台使用的用户名

TELNETCONSOLE_PASSWORD

Default: None

远程登录控制台的密码,默认行为是自动生成