скрап застревает через некоторое время - PullRequest
0 голосов
/ 02 января 2019

У меня есть мастер-рабочая сеть на aws ec2 с использованием распределенной библиотеки dask.На данный момент у меня есть одна мастер-машина и одна рабочая машина.Мастер имеет REST API (колбу) для планирования работы Scrapy на рабочей машине.Я использую docker как для главного, так и для рабочего, что означает, что и главный, и рабочий контейнеры общаются друг с другом с использованием dask

Когда я планирую задание scrapy, сканирование успешно запускается, и scrapy также загружает данные в s3.Но через некоторое время скрап застревает в одной точке, и после этого ничего не происходит.

Пожалуйста, проверьте вложенный файл журнала для получения дополнительной информации

log.txt

2019-01-02 08:05:30 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f1fe54adf28>>

Схватка застревает в вышеуказанной точке.

команда для запуска docker:

sudo docker run --network host -d crawler-worker # for worker
sudo docker run -p 80:80 -p 8786:8786 -p 8787:8787 --net=host -d crawler-master # for master

Я сталкиваюсь с этой проблемой и на новой машине ec2

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Я решил проблему. Проблема заключалась в подпроцессе, который я использовал для выполнения scrapy с аргументом stdout = subprocess.PIPE, а функция wait () документации подпроцесса может вызвать взаимоблокировку при использовании stdout = subprocess.PIPE или stderr = subprocess.PIPE.

0 голосов
/ 02 января 2019

(Это будет комментарий, но у меня пока нет смысла это делать.)

Возможно, вы столкнулись с какой-то защитой от DDOS.Вы пытались очистить контрольный сайт?

...