套接字超时:超时python请求

fpg*_*ost 7 socket-timeout-exception python-requests

使用requestspython lib,我发出一个GET请求,并处理Timeout异常(以及我未在此处显示的其他异常),如

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
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下工作正常,但有时我的程序只是完全退出错误socket.timeout: timed out,而不是抛出requests.exceptions.Timeout并被捕获和处理.

为什么请求lib的行为如此?我该怎么处理?

use*_*184 2

回答:

try:
    data = sock.recv(256)
except socket.timeout:
    data="NO RESPONSE"
Run Code Online (Sandbox Code Playgroud)

不会退出!