2014-03-25 39 views
5

使用requests蟒蛇lib下,我做一個GET請求,並處理超時異常(以及其他異常我不顯示在這裏)像套接字超時:超時蟒蛇請求

import requests 
timeout1=20 
timeout2=40 

try: 
    #first attempt 
    resp = requests.get(base_url+resource, params=payload, headers=headers, 
    timeout=timeout1) 
except requests.exceptions.Timeout: 
    #timed out, retry once 
    try: 
     resp = requests.get(base_url+resource, params=payload, headers=headers, 
     timeout=timeout2) 
     return resp.json() 
    except requests.exceptions.RequestException as e: 
     #Still failed; return error code 
     return -1 

該作品大多數情況下都是這樣,但是有時候我的程序完全退出,出現錯誤socket.timeout: timed out,而不是拋出requests.exceptions.Timeout,並且這個被捕獲和處理。

爲什麼請求庫的行爲如此?我該如何處理?

+0

您是否找到了解決此問題的答案? – user2801184

+0

這裏是答案:嘗試: data = sock.recv(256) 除了socket.timeout: data =「NO RESPONSE」 – user2801184

回答

0

答:

try: 
    data = sock.recv(256) 
except socket.timeout: 
    data="NO RESPONSE" 

它不會退出!