我正在创建一个尝试调用api的尝试,并设置了except以捕获可能发生的任何错误。但是,该程序在try部分停留了大约一分钟。有没有办法让代码在服务器上放弃,并在更短的时间内选择除外路径?
编辑:这是代码
url = "http://10.10.120.48:8080/api/GetChannelList?pageSize=100&pageIndex=0"
try:
rsp = requests.get(url)
except:
#error message
答案 0 :(得分:0)
我假设您正在使用请求模块。 “ rsp = requests.get(url)”行实际上是在进行其余的api调用。默认情况下,该调用会有一定的延迟,执行时间可能会因多个变量而异,而没有其他信息,将它们全部探索毫无意义。您所寻找的不仅仅是为正在构建的请求会话对象调整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://'挂载,如果您希望我建议阅读下面的docs ...链接,可以稍后进行更改
reqObj = requests.Session()
reqObj.mount('http://', adapter)
最后,您可以使用实例化的会话对象发出get请求。 “响应”将保存与“ 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)