2016-06-10 5 views
0

У меня есть сценарий, который запускает и отправляет URL-адреса в текстовом файле через GET в API и сохраняет ответ на текстовый файл. Однако цикл for завершает работу, если я получаю сбой в первом разделе и не передаю остальные. Как я могу по-прежнему захватить сбой и продолжить работу с остальными без выхода скрипта до его завершения?Продолжить Обработка запросов после сбоя в python

sys.stdout=open("mylog.txt","w") 
for row in range(0, len(exampleData)): 
    url = exampleData[row][0] 
    print (url) 
    response = requests.get(url, auth=(user, pwd)) 
    if response.status_code != 200: 
     print('Failure Message {}' .format(response.text)) 
     work = 'failed' 
     continue 
    data = json.loads(response.text)  
    print(data) 
    work = 'succeeded' 
sys.stdout.close() 
+0

Исправьте отступ в коде: _some_ строки кода в цикле 'for' должны быть отступом, но невозможно угадать, сколько. – alexis

+0

Спасибо, просто сделал это – user3691635

ответ

2

Использование продолжать вместо выхода()

+0

Пробовал это, но мой файл журнала по-прежнему показывал только первый сбой не всех с продолжением. Казалось, что процесс длится дольше. – user3691635

0

Используйте exception, чтобы поймать сбой и продолжить.

+0

Так что вместо утверждения IF используйте метод Try and Except catch? IE: – user3691635

+0

Да, поймайте исключение, а затем продолжайте. – Lucas

0

Теперь, когда ваш контур управления исправляется, он должен быть правильно работать. Он будет распечатывать сообщение об ошибке каждый раз, когда он получает ответ об ошибке (не 200). Если вы видите только одно сообщение об ошибке, вы получаете только один ответ не-200 с другой стороны. Если это не то, что вы ожидаете, проблема на стороне сервера. (Или в содержании exampleData.)

Вам необходимо отладить собственную серверно-клиентскую систему. Упростите этот цикл, так что единственное, что он делает, это распечатать диагностическую информацию об ответе (например, распечатать status_code) и узнать, что происходит на самом деле.

Смежные вопросы