在python中失败后继续处理请求

时间:2016-06-10 15:29:52

标签: python for-loop httpresponse

我有一个脚本,它运行并通过GET将文本文件中的URL提交给API,并将响应保存到文本文件中。但是,如果我在第一部分中出现故障并且没有继续传递其他部分,则for循环退出。在完成之前,如何在没有脚本退出的情况下仍然可以抓住故障并继续使用其他人?

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()

3 个答案:

答案 0 :(得分:2)

使用continue而不是exit()

答案 1 :(得分:0)

使用exception来捕获失败并继续。

答案 2 :(得分:0)

现在您的循环控制已得到纠正,它必须正常工作。每次收到错误响应(而不是200)时,它都会打印出一条失败消息。如果您只看到一条错误消息,那么您只能从另一方获得一个非200响应。如果这不是您所期望的,则问题出在服务器端。 (或在exampleData的内容。)

您需要调试自己的服务器 - 客户端系统。简化此循环,以便它唯一能够打印有关响应的诊断信息(例如,打印status_code),并找出实际发生的情况。