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_USERNAMETELNETCONSOLE_PASSWORD で上書きできます。

警告

telnetは安全なトランスポートを使用していないため、ユーザー名とパスワードは限定的な保護しか提供しません。デフォルトでは、ユーザー名とパスワードが設定されていてもトラフィックは暗号化されません。

Windows、およびほとんどのLinuxディストリビューションにデフォルトでインストールされるtelnetプログラムが必要です。

telnetコンソールで使用可能な変数

telnetコンソールは、Scrapyプロセス内で実行される通常のPythonシェルのように、新しいモジュールのインポートなど、あらゆる操作を行うことができます。

けれども、Telnetコンソールには、便宜上いくつかのデフォルト変数が定義されています:

ショートカット

説明

crawler

Scrapyクローラー( scrapy.crawler.Crawler オブジェクト)

engine

Crawler.engine 属性

spider

現在アクティブなスパイダー

slot

エンジン・スロット(engine slot)

extensions

拡張機能マネージャー(Crawler.extensions 属性)

stats

統計収集器(stats collector)(Crawler.stats 属性)

settings

Scrapy設定オブジェクト(Crawler.settings 属性)

est

Scrapyエンジンのステータスレポートを出力

prefs

メモリ・デバッグ用( メモリ・リークのデバッグ 参照)

p

pprint.pprint 関数へのショートカット

hpy

メモリ・デバッグ用( メモリ・リークのデバッグ 参照)

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.

Telnetコンソール・シグナル

scrapy.extensions.telnet.update_telnet_vars(telnet_vars)

telnetコンソールが開く直前に送信されます。この信号に接続して、telnetローカル名前空間で使用できる変数を追加、削除、または更新できます。そのためには、ハンドラーの telnet_vars 辞書を更新する必要があります。

パラメータ

telnet_vars (dict) -- telnet変数の辞書

Telnet設定

これらは、Telnetコンソールの振る舞いを制御する設定です:

TELNETCONSOLE_PORT

デフォルト: [6023, 6073]

telnetコンソールに使用するポート範囲。 None または 0 に設定すると、動的に割り当てられたポートが使用されます。

TELNETCONSOLE_HOST

デフォルト: '127.0.0.1'

telnetコンソールがリッスンするネットワーク・インターフェイス

TELNETCONSOLE_USERNAME

デフォルト: 'scrapy'

telnetコンソールに使用されるユーザー名

TELNETCONSOLE_PASSWORD

デフォルト: None

telnetコンソールに使用されるパスワード。デフォルトの動作では自動生成されます