2014-01-28 107 views
13

我正在使用web服務來檢索一些數據,但有時URL不工作,我的網站沒有加載。你知道我可以如何處理以下異常,以防萬一web服務無法正常工作時網站沒有問題?Python請求 - 異常類型:ConnectionError - 嘗試:除了不起作用

Django Version: 1.3.1 
Exception Type: ConnectionError 
Exception Value: 
HTTPConnectionPool(host='test.com', port=8580): Max retries exceeded with url: 

我用

try: 
    r = requests.get("http://test.com", timeout=0.001) 
except requests.exceptions.RequestException as e: # This is the correct syntax 
    print e 
    sys.exit(1) 

但沒有任何反應

+0

的反應我不知道但不應該是'except requests.exceptions.RequestException,e:'?你也說你有'ConnectionError'作爲例外,但我沒有看到你抓住這個特定的例外... –

+0

好,因爲我是新來的蟒蛇我從這裏找到答案: http://stackoverflow.com/questions/16511337/correct-way-to-try-except-using-python-requests-module – user1431148

回答

26

你不應該離開你的工人實例sys.exit(1) 而且你是趕上了錯誤的錯誤。

你可以爲例如做的是:

from requests.exceptions import ConnectionError 
try: 
    r = requests.get("http://example.com", timeout=0.001) 
except ConnectionError as e: # This is the correct syntax 
    print e 
    r = "No response" 

在這種情況下,你的程序將繼續進行,設定的r值通常保存到任何默認值

+1

我只是試過了,但是我得到了相同的結果。 – user1431148

+0

抱歉,沒有看到你正在捕獲錯誤的錯誤:你收到一個ConnectionError,所以你需要捕獲這個錯誤(見編輯答案) – ProfHase85

+0

它的工作原理!非常感謝你!但我使用 ,除了requests.exceptions.ConnectionError作爲e: – user1431148