Проверьте результат лечения в bash - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть несколько пауков, которых я запускаю в bash-скрипте, например так:

pipenv run scrapy runspider -o output-a.json a.py
pipenv run scrapy runspider -o output-b.json b.py

Поскольку они должны работать долго, я бы хотел иметь простой способ контроля их успешности;Мой план состоял в том, чтобы пинговать https://healtchecks.io, когда оба скребка работают успешно (то есть у них нет сообщений об ошибках).Я набросал несколько assert операторов в код, чтобы быть достаточно уверенным в этом.

pipenv run scrapy runspider -o output-a.json a.py
result_a=$?
pipenv run scrapy runspider -o output-b.json b.py
result_b=$?

if [ $result_a -eq 0 && $result_b -eq 0]; then
    curl $url
fi

Моя проблема в том, что каждая команда scrapy runspider всегда возвращает 0, несмотря ни на что.Это означает, что я не могу действительно проверить, были ли они успешными.

Есть ли способ повлиять на это поведение?Какой-то флаг командной строки я не нашел?Если нет, как бы я запустил двух пауков из скрипта Python и сохранил их вывод в определенном месте?Я нашел эту ссылку , но там не упоминается, как обращаться с возвращенными элементами.

1 Ответ

0 голосов
/ 25 сентября 2018

В итоге я решил назначить вывод журнала переменной и grep пропинговать ее для ERROR: Spider error processing.Скрапия обладает очень хорошим поведением: не нужно излишне рано выходить из строя;если бы я сам вышел из скрипта Python, я бы это потерял.Таким образом, я мог просто запускать один скребок за другим и обрабатывать ошибки в конце, так что я все еще мог собрать как можно больше, будучи уведомленным в случае, если что-то не работает на 100% гладко.

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