【问题标题】:Python while loop token not updatingPython while循环令牌未更新
【发布时间】:2021-08-02 05:14:18
【问题描述】:

我正在探索 Azure 管理 API。 ADF 监控管道一次仅返回 100 条记录。所以我创建了一个while循环,但由于某种原因,不确定是什么,无法获得下一个令牌。

ct = d.get('continuationToken','')
c = 1
while ct!='':
    req_body = self.getDataBody(ct)
    data = self.getResponse(data_url,data_headers,req_body)
    nct = self.getContinuationToken(data,c)
    c = c+1
    print(c)
    if ct == nct:
        print(ct)
        print(nct)
        print('duplicate token')
        break
    ct = nct
    if ct == '':
        break

在下一次迭代中,下一个令牌不会更新。

更新:

按照上述代码使用的功能

def getDataBody(self,ct):
    start_date = datetime.now().strftime("%Y-%m-%d")
    end_date = (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%d")
    data_body = {'lastUpdatedAfter': start_date, 'lastUpdatedBefore': end_date}
    if ct!='':
        data_body['continuationToken'] = ct
    return data_body


def getResponse(self,url,headers,body):
    data = requests.post(url,headers=headers,data=body)
    return data.text


def getContinuationToken(self,data,c):
    d = json.loads(data)
    with open(f'data/{c}.json','w') as f:
        json.dump(d,f)
    return d.get('continuationToken','')

【问题讨论】:

  • 您是否尝试过查看循环中的响应是否不同?也许你总是得到相同的回应。
  • 如果通过传递更新的延续令牌手动多次运行它会有所不同,但在循环中令牌保持不变
  • 您是否尝试过编写一个自定义虚拟 getContinuationToken 始终返回不同的内容以查看问题是否会消失?
  • 是的,对于其他事情,逻辑是有效的

标签: python azure-management-api


【解决方案1】:

您可以尝试增加 ADF 活动中的超时时间,这可能是由于您当前 ADF 活动中的超时设置小于实际时间 执行该 API。

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 2023-03-04
    • 2019-03-05
    • 1970-01-01
    • 2017-07-12
    • 2020-10-01
    • 2017-05-21
    • 1970-01-01
    相关资源
    最近更新 更多