我正在创建一个尝试调用api,并设置一个异常来捕获任何可能发生的错误。然而,程序在try部分延迟了大约一分钟。有没有一种方法可以让代码在较短的时间内放弃服务器,选择except路径?
编辑:这是代码
url = "http://10.10.120.48:8080/api/GetChannelList?pageSize=100&pageIndex=0"
try:
rsp = requests.get(url)
except:
#error message
发布于 2018-08-01 04:38:47
我假设您使用的是requests模块。行'rsp = requests.get(url)‘实际上正在进行rest api调用。默认情况下,调用中会有一些延迟,执行时间可能会根据多个变量而变化,如果没有额外的信息,探索所有这些变量是没有意义的。您更可能要做的是调整正在构建的requests session对象的HTTPAdapter。首先,进行导入:
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
然后构建一个重试对象,用于HTTPAdapter对象中的max_retries字段。注意connect和back_off因子,这是您感兴趣的值。注意*这是可选的,您可以简单地构建适配器并将其传递给max_retries的int值。
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
然后,您需要实例化一个请求会话,然后挂载它,而不是进行简单的get调用。不要担心使用'http://‘’挂载,如果你愿意,你可以稍后更改它,我建议你通读一下文档...下面的链接
reqObj = requests.Session()
reqObj.mount('http://', adapter)
最后,可以使用实例化的会话对象发出get请求。‘'response’将保存与'rsp‘变量相同的数据
response = reqObj.get(Url)
下面是要复制和粘贴的整个代码片段;)。我建议查看文档中的请求,它们涉及会话和高级用法。http://docs.python-requests.org/en/master/user/advanced/
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
Url = 'http://CoolApiDomain'
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
reqObj = requests.Session()
reqObj.mount('http://', adapter)
response = reqObj.get(Url)
https://stackoverflow.com/questions/51619151
复制相似问题