我有一个只能运行一次的请求。有时,请求花费的时间比应有的要长得多。
如果我要设置一个默认的套接字超时值(使用socket.setdefaulttimeout(5)
),并且它花费了超过 5 秒,那么原始请求是否会被取消,以便可以安全地重试(参见下面的示例代码)?
如果不是,那么取消原始请求并再次重试以确保它不会运行超过一次的最佳方法是什么。
import socket
from googleapiclient.discovery import build
from tenacity import retry, stop_after_attempt, wait_fixed, retry_if_exception_type
@retry(
retry=retry_if_exception_type(socket.timeout),
wait=wait_fixed(4),
stop=stop_after_attempt(3)
)
def create_file_once_only(creds, body):
service = build('drive', 'v3', credentials=creds)
file = service.files().create(body=body, fields='id').execute()
socket.setdefaulttimeout(5)
create_file_once_only(creds, body)