首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中捕获"socket.timeout读取操作超时“

在python中捕获"socket.timeout读取操作超时“
EN

Stack Overflow用户
提问于 2017-08-20 00:56:52
回答 2查看 24.4K关注 0票数 17

我正在调用API,并收到以下超时错误:

代码语言:javascript
复制
socket.timeout The read operation timed out

它可以追溯到

代码语言:javascript
复制
File "/Users/someuser/anaconda/envs/python3/lib/python3.5/http/client.py", line 1198, in getresponse
    response.begin()
  File "/Users/someuser/anaconda/envs/python3/lib/python3.5/http/client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "/Users/someuser/anaconda/envs/python3/lib/python3.5/http/client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/Users/someuser/anaconda/envs/python3/lib/python3.5/socket.py", line 576, in readinto
    return self._sock.recv_into(b)
  File "/Users/someuser/anaconda/envs/python3/lib/python3.5/ssl.py", line 937, in recv_into
    return self.read(nbytes, buffer)
  File "/Users/someuser/anaconda/envs/python3/lib/python3.5/ssl.py", line 799, in read
    return self._sslobj.read(len, buffer)
  File "/Users/someuser/anaconda/envs/python3/lib/python3.5/ssl.py", line 583, in read
    v = self._sslobj.read(len, buffer)
socket.timeout The read operation timed out

如何从回溯的顶部捕获此错误?

EN

回答 2

Stack Overflow用户

发布于 2018-06-18 00:44:22

这是一个重复的问题,但是正确的方法是通过使用

代码语言:javascript
复制
import socket
try:
    ...
except socket.timeout:
    ...

该错误声明了显式抛出的异常,您可以依赖它。尽管调用方法是ssl,但错误似乎与实际的套接字连接有关。

票数 9
EN

Stack Overflow用户

发布于 2017-08-20 05:43:37

谷歌搜索让我找到了https://community.home-assistant.io/t/difficulty-catching-an-exception/12955/6

看起来SSL在超时的时候抛出了ssl.SSLError。您可以尝试如下所示:

代码语言:javascript
复制
import ssl

def getresponse():
     ...
     try:
          response.begin
     except ssl.SSLError as err:
          handle_error(err)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45774126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档