代码之家  ›  专栏  ›  技术社区  ›  developthou

在request-get调用期间遍历内容范围的Python方法

  •  0
  • developthou  · 技术社区  · 4 年前

    GET rest api返回

    < HTTP/1.1 200 OK
    < rlogid: t6elbbolst2%3F%3Ckuv%60ng%60jnvv7*6565%3B37-17d3a004c7d-0x233d
    < content-range: nodes 1-397/397
    < x-ebay-request-id: 17d3a004-c7e0-a4cc-d414-b222ff7438ae!Ginger.LIST FOLDER.GET!lvsfidelius1-5002861.stratus.lvs.ebay.com!r1fidelius1[]
    < content-type: application/json
    < content-length: 173
    < date: Fri, 19 Nov 2021 21:00:37 GMT
    < x-envoy-upstream-service-time: 11
    < server: ebay server
    

    我正在使用 request 单元现在我要打两个电话

    1. 第一个电话让我得到 total 从…起 content-range
    2. 第二个调用通过传递total来调用api以获取所有内容

    我正在使用while循环

       def get_children(self, size=500):
            while True:
                url = "{}/list?size={}".format(
                    self.endpoint, size)
    
                result = requests.get(url, verify=False)
                result.raise_for_status()
    
                if 'content-range' in result.headers:
                    crange = result.headers['content-range']
                    size = int(
                        re.match(ur'^nodes \d+-(\d+)\/(\d+)$', crange).group(1))
                    total = int(
                        re.match(ur'^nodes \d+-(\d+)\/(\d+)$', crange).group(2))
                    if size < total:
                        size = total
                    else:
                        break
            return result.json()
    

    我觉得有更好的方法。有什么建议吗?

    0 回复  |  直到 4 年前