Система кэширования сетевых запросов

В целях ускорения тестирования паука в процессе разработки, а также ускорения повторного парсинга данных, была разработана система кэширования. В данный момент есть ограничение - только GET запросы могут быть закешированными. Важно понимать что кэш в Spider это не полноценный http-прокси-сервер это лишь средство для отладки. Хотя стоит заметить, что даже в таком примитвной реализации система кэширования в большинстве случаев позволяет успешно использовать закэшированные данные для повторного парсинга в случае изменения логики обработки данных.

Бэкенды системы кэширования

Кэш в Spider разработан в виде отдельньго слоя для того, чтобы можно было подключать различные базы данных. В данный момент доступна только одна реализация кэша - хранение данных в mongodb

Исползование кэша

Для того, чтобы паук мог искать запрашиваемые документы в кэше и сохранять в кэш полученные данные, нужно вызывать метод setup_cache до начала работы паука:

bot = ExampleSpider()
bot.setup_cache(database='some-database')
bot.run()

Вышенаписанный код активирует кэш, документы будут искаться и сохраняться в базе данных mongodb с именем ‘some-datbase’. Имя коллекции с документами: “cache”.

Есть несколько настроек для регулирования работы кэша:

backend:бэкенд кэша, сейчас ничего кроме “mongo” не работает
database:имя mongodb базы данных
use_compression:
 использование gzip для сжатия данных перед помещением их в кэш.

Сжатие кэшируемых данных

По умолчанию сжатие включено. Сжатие позволяет на порядок уменьшить размер места в базе данных, необходимого для хранения закешированных документов. Сжатие снижает скорость работы паука, но не намного.