Консоль Telnet¶
Scrapy поставляется со встроенной консолью telnet для проверки и управления запущенным процессом Scrapy. Консоль telnet — это обычная оболочка Python, работающая внутри процесса Scrapy, так что вы можете делать с её помощью буквально все, что угодно.
Консоль telnet — это встроенное расширение Scrapy, которая включена по умолчанию, но вы также можете отключить её, если хотите. Для получения дополнительной информации о самом расширении см. Расширение консоли Telnet.
Предупреждение
Использование консоли telnet в общедоступных сетях небезопасно, поскольку telnet не обеспечивает безопасность на транспортном уровне. Наличие аутентификации по имени пользователя и паролю этого не меняет.
Предполагаемое использование — подключение к работающему пауку Scrapy локально (процесс паука и клиент telnet находятся на одном компьютере) или через безопасное соединение (VPN, туннель SSH). Избегайте использования консоли telnet при незащищенных соединениях или полностью отключает её с помощью параметра TELNETCONSOLE_ENABLED
.
Как получить доступ к консоли telnet¶
Консоль telnet прослушивает порт TCP, определенный в настройке TELNETCONSOLE_PORT
, которая по умолчанию имеет значение 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
Имя пользователя и пароль по умолчанию можно изменить с помощью настроек TELNETCONSOLE_USERNAME
и TELNETCONSOLE_PASSWORD
.
Предупреждение
Имя пользователя и пароль обеспечивают только ограниченную защиту, поскольку telnet не использует безопасный транспорт — по умолчанию трафик не шифруется, даже если установлены имя пользователя и пароль.
Вам понадобится программа telnet, которая по умолчанию устанавливается в Windows и большинстве дистрибутивов Linux.
Доступные переменные в консоли telnet¶
Консоль telnet похожа на обычную оболочку Python, работающую внутри процесса Scrapy, поэтому вы можете делать с ней все, что угодно, включая импорт новых модулей и т. д.
Однако консоль telnet поставляется с некоторыми переменными по умолчанию, определенными для удобства:
Ярлык |
Описание |
---|---|
|
Crawler Scrapy (объект |
|
Атрибут Crawler.engine |
|
активный паук |
|
слот двигателя |
|
Менеджер расширений (атрибут Crawler.extensions) |
|
Сборщик статистики (атрибут Crawler.stats) |
|
объект настроек Scrapy (атрибут Crawler.settings) |
|
распечатать отчёт о состоянии двигателя |
|
для отладки памяти (см. Устранение утечек памяти) |
|
ярлык для функции |
|
для отладки памяти (см. Устранение утечек памяти) |
Примеры использования консоли Telnet¶
Вот несколько примеров задач, которые вы можете выполнять с помощью консоли telnet:
Посмотреть статус двигателя¶
Вы можете использовать метод est()
подсистемы Scrapy, чтобы быстро показать его состояние с помощью консоли telnet:
telnet localhost 6023
>>> est()
Execution engine status
time()-engine.start_time : 8.62972998619
len(engine.downloader.active) : 16
engine.scraper.is_idle() : False
engine.spider.name : followall
engine.spider_is_idle() : 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. Для этого вам необходимо обновить dict
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, по умолчанию он создаётся автоматически