"Socket-timeout: timed out python requests":套接字超时:Python请求超时。
"Socket-timeout: timed out python requests":套接字超时:Python请求超时。
使用 requests
Python 库,我发起一个 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
并被捕获和处理。
为什么 requests 库会出现这种行为?我应该如何处理它?
admin 更改状态以发布 2023年5月22日
我认为这是requests使用urllib3的问题:
https://github.com/kennethreitz/requests/issues/1236
你需要捕获socket.timeout错误。(基于jb在Python requests模块的正确的try/except使用方式?中的评论)