让我们试着抓到更快的Python

2024-10-01 04:51:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个试图调用api的函数,并设置一个except来捕获可能发生的任何错误。然而,这个程序在try部分延迟了大约一分钟。有没有办法让代码在服务器上放弃并在更短的时间内选择except路径?你知道吗

编辑:这是代码

url = "http://10.10.120.48:8080/api/GetChannelList?pageSize=100&pageIndex=0"
try:
    rsp = requests.get(url)
except:
    #error message

Tags: 函数代码路径程序服务器apihttpurl
1条回答
网友
1楼 · 发布于 2024-10-01 04:51:26

我猜你在使用请求模块。行'rsp=请求。获取(url)“”实际上正在进行RESTAPI调用。默认情况下,调用中会有一些延迟,执行时间可能会因多个变量而异,如果没有额外的信息,那么对所有变量进行研究是毫无意义的。很可能您正在寻找的是为正在构建的请求会话对象调整HTTPAdapter。 首先,你要做的是:

import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

然后构建一个Retry对象,用于HTTPAdapter对象中的max\ u retries字段。注意connect和back\u off因子,这里有您感兴趣的值。注意*这是可选的,您可以简单地构建适配器,并为其传递一个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)

相关问题 更多 >