首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >让Try Catch更快的Python

让Try Catch更快的Python
EN

Stack Overflow用户
提问于 2018-08-01 01:41:52
回答 1查看 51关注 0票数 0

我正在创建一个尝试调用api,并设置一个异常来捕获任何可能发生的错误。然而,程序在try部分延迟了大约一分钟。有没有一种方法可以让代码在较短的时间内放弃服务器,选择except路径?

编辑:这是代码

代码语言:javascript
复制
url = "http://10.10.120.48:8080/api/GetChannelList?pageSize=100&pageIndex=0"
try:
    rsp = requests.get(url)
except:
    #error message
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-01 04:38:47

我假设您使用的是requests模块。行'rsp = requests.get(url)‘实际上正在进行rest api调用。默认情况下,调用中会有一些延迟,执行时间可能会根据多个变量而变化,如果没有额外的信息,探索所有这些变量是没有意义的。您更可能要做的是调整正在构建的requests session对象的HTTPAdapter。首先,进行导入:

代码语言:javascript
复制
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

然后构建一个重试对象,用于HTTPAdapter对象中的max_retries字段。注意connect和back_off因子,这是您感兴趣的值。注意*这是可选的,您可以简单地构建适配器并将其传递给max_retries的int值。

代码语言:javascript
复制
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)

然后,您需要实例化一个请求会话,然后挂载它,而不是进行简单的get调用。不要担心使用'http://‘’挂载,如果你愿意,你可以稍后更改它,我建议你通读一下文档...下面的链接

代码语言:javascript
复制
reqObj = requests.Session()
reqObj.mount('http://', adapter)

最后,可以使用实例化的会话对象发出get请求。‘'response’将保存与'rsp‘变量相同的数据

代码语言:javascript
复制
response = reqObj.get(Url)

下面是要复制和粘贴的整个代码片段;)。我建议查看文档中的请求,它们涉及会话和高级用法。http://docs.python-requests.org/en/master/user/advanced/

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51619151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档