@Ivan2121

Как обойти ошибку timeout и сделать работу скрипта на python бесконечной?

Здравствуйте! Написал парсер на Python, выставил кол-во циклов от 1 до миллиона. Но время от времени появляются ошибки timeout, например:
File "D:\Python\lib\site-packages\grab\base.py", line 368, in go
return self.request(url=url, **kwargs)
File "D:\Python\lib\site-packages\grab\base.py", line 437, in request
self.transport.request()
File "D:\Python\lib\site-packages\grab\transport\curl.py", line 447, in request
raise error.GrabTimeoutError(ex.args[0], ex.args[1])
GrabTimeoutError: [Errno 28] Operation timed out after 15000 milliseconds with 0 bytes received


После чего скрипт само собой не работает. Отследить когда это произойдет в следующий раз - не возможно, так как у компьютера я не нахожусь не постоянно. Как обойти эту ошибку или сделать так, чтобы парсер посылал запрос бесконечно, пока не получит ответ, но не вырубался?
  • Вопрос задан
  • 4664 просмотра
Пригласить эксперта
Ответы на вопрос 3
suguby
@suguby
программист, python, django, mysql, git, hg, linux
def grab_all_internet():
    # много кода

while True:
    try:
        grab_all_internet()
    except:
        print 'Restart!'

и пусть интернет повесится :)
Ответ написан
Комментировать
@throughtheether
human after all
Как обойти эту ошибку или сделать так, чтобы парсер посылал запрос бесконечно, пока не получит ответ, но не вырубался?
Я бы на вашем месте отлавливал исключение GrabTimeoutError и повторял при необходимости запрос (с ограничением количества попыток, естественно).
Ответ написан
Комментировать
karulyana
@karulyana
Начинающий питонист
while True:
    try:
        #прога
    except GrabTimeoutError:
        continue


по идее, когда ошибка появиться - прога перезапуститься
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы