Python请求-异常类型:ConnectionError-try:Exception不起作用

Python请求-异常类型:ConnectionError-try:Exception不起作用,python,url,python-requests,connection,python-2.x,Python,Url,Python Requests,Connection,Python 2.x,我正在使用Web服务检索一些数据,但有时url不起作用,我的站点也没有加载。您知道我如何处理以下异常,以便在Web服务不工作的情况下网站不会出现问题吗 Django Version: 1.3.1 Exception Type: ConnectionError Exception Value: HTTPConnectionPool(host='test.com', port=8580): Max retries exceeded with url: 我曾经 try: r = reque

我正在使用Web服务检索一些数据,但有时url不起作用,我的站点也没有加载。您知道我如何处理以下异常,以便在Web服务不工作的情况下网站不会出现问题吗

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)

但是什么也没有发生

您不应该退出您的worker实例
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
的值,该值通常将响应保存为任何默认值

我不确定,但它不应该是
除了requests.exceptions.RequestException,e:
?另外,你说你有
ConnectionError
作为一个异常,但我看不出你捕捉到了这个特定的异常……因为我是python新手,所以我从这里找到了答案:抱歉,没有看到你捕捉到了错误:你得到了一个ConnectionError,所以你需要捕捉到这个异常(请参见编辑后的答案),它可以工作!非常感谢你!但是我使用了except requests.exceptions.ConnectionError,因为e:ConnectionError也是一个内置错误类型的名称——当它们有如此糟糕的命名实践时,这怎么可能是一个广泛使用的包呢?str和repr都没有给出该类不是内置类的任何指示。它甚至不从内置的ConnectionError继承,而是从OSError继承(真正的内置程序也这样做)。