Telnetコンソール¶
Scrapyには、Scrapy実行中のプロセスを検査および制御するための組み込みのtelnetコンソールが付属しています。telnetコンソールは、Scrapyプロセス内で実行される通常のpythonシェルであるため、文字通り何でもできます。
telnetコンソールは 組み込みのScrapy拡張機能 であり、デフォルトで有効になっていますが、必要に応じて無効にすることもできます。拡張機能自体の詳細については、 Telnetコンソール拡張機能 を参照してください。
警告
telnetはトランスポート層セキュリティを提供しないため、パブリック・ネットワーク経由でtelnetコンソールを使用することは安全ではありません。 ユーザー名/パスワード認証を使用しても、それは変わりません。
意図している使用方法は、実行中のScrapyスパイダーにローカル(スパイダー・プロセスとtelnetクライアントが同じマシン上にある)または安全な接続(VPN、SSHトンネル)に接続することです。安全でない接続ではtelnetコンソールを使用しないようにするか、 TELNETCONSOLE_ENABLED
オプションを使用して完全に無効にしてください。
telnetコンソールにアクセスする方法¶
telnetコンソールは TELNETCONSOLE_PORT
設定で定義されたTCPポートでリッスンします。デフォルトは 6023
です。コンソールにアクセスするには次のように入力する必要があります:
telnet localhost 6023
Trying localhost...
Connected to localhost.
Escape character is '^]'.
Username:
Password:
>>>
デフォルトでは、ユーザー名は scrapy
であり、パスワードは自動生成されます。自動生成されたパスワードは、以下の例のようにScrapyログで確認できます:
2018-10-16 14:35:21 [scrapy.extensions.telnet] INFO: Telnet Password: 16f92501e8a59326
デフォルトのユーザー名とパスワードは、設定 TELNET_CONSOLE_USERNAME
と TELNETCONSOLE_PASSWORD
で上書きできます。
警告
telnetは安全なトランスポートを使用していないため、ユーザー名とパスワードは限定的な保護しか提供しません。デフォルトでは、ユーザー名とパスワードが設定されていてもトラフィックは暗号化されません。
Windows、およびほとんどのLinuxディストリビューションにデフォルトでインストールされるtelnetプログラムが必要です。
telnetコンソールで使用可能な変数¶
telnetコンソールは、Scrapyプロセス内で実行される通常のPythonシェルのように、新しいモジュールのインポートなど、あらゆる操作を行うことができます。
けれども、Telnetコンソールには、便宜上いくつかのデフォルト変数が定義されています:
ショートカット |
説明 |
---|---|
|
Scrapyクローラー( |
|
Crawler.engine 属性 |
|
現在アクティブなスパイダー |
|
エンジン・スロット(engine slot) |
|
拡張機能マネージャー(Crawler.extensions 属性) |
|
統計収集器(stats collector)(Crawler.stats 属性) |
|
Scrapy設定オブジェクト(Crawler.settings 属性) |
|
Scrapyエンジンのステータスレポートを出力 |
|
メモリ・デバッグ用( メモリ・リークのデバッグ 参照) |
|
|
|
メモリ・デバッグ用( メモリ・リークのデバッグ 参照) |
Telnetコンソール使用例¶
telnetコンソールで実行できるタスクの例を次に示します:
Scrapyエンジンのステータスを表示¶
あなたは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
Scrapyエンジンを一時停止、再開、停止する¶
一時停止するためには:
telnet localhost 6023
>>> engine.pause()
>>>
(一時停止したのを)再開するためには:
telnet localhost 6023
>>> engine.unpause()
>>>
停止(再開不可)するためには:
telnet localhost 6023
>>> engine.stop()
Connection closed by foreign host.