Можем ли мы использовать замки в Scrapy?Они когда-либо требуются, поскольку Scrapy является однопоточным? - PullRequest
0 голосов
/ 29 сентября 2019

В моем Item Pipeline для добавления данных в базу данных, во время обработки элемента, соединение с сервером может случайно разорваться, и мне нужно восстановить соединение.Теперь в функции open_connection мне нужно убедиться, что только один поток создаст новое соединение и все параллельные запросы не начнут создавать новое соединение?

Поскольку scrapy однопоточный, яПолагаю, в этом сценарии мне не понадобятся блокировки, поскольку один поток восстановит соединение, а все последующие входящие обратные вызовы для функции process_item будут иметь установленное соединение.Если это не так, могу ли я использовать все обычные блокировки Python с scrapy?

1 Ответ

1 голос
/ 29 сентября 2019

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

Для персистентной части вы хотите использовать буфер для сохранения документов в пакетах, чтобы минимизировать нагрузку на базу данных и общую передачу в оба конца.время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...