Azure Logic Apps Python SDK过滤查询迭代时重复条件报错求助
问题:Azure Logic Apps Python SDK添加过滤条件遍历迭代器时触发重复过滤条件错误
使用Azure Logic Apps Python SDK检索数据时,添加过滤条件后遍历返回的迭代器对象会触发错误,且报错的迭代阶段不固定(如有时在第3次迭代失败,有时在第29次);不使用过滤条件时则运行正常。
示例1(workflow_runs)
response_runs = logic_app_client.workflow_runs.list(workflow_name=workflow, resource_group_name=resource_group, filter = "StartTime Gt 2022-09-23T15:02:16.078315Z") for i, run in enumerate(response_runs): print(i)
错误信息:
HttpResponseError: (InvalidQueryFilter) The provided query filter 'StartTime Gt 2022-09-23T15:02:16.078315Z,StartTime Gt 2022-09-23T15:02:16.078315Z' is not valid or not supported. Code: InvalidQueryFilter Message: The provided query filter 'StartTime Gt 2022-09-23T15:02:16.078315Z,StartTime Gt 2022-09-23T15:02:16.078315Z' is not valid or not supported.
示例2(workflow_trigger_histories)
trigger_histories = logic_app_client.workflow_trigger_histories.list(resource_group_name=resource_group, trigger_name= trigger, workflow_name=workflow, filter="Status eq 'Succeeded'") for i, trigger_histroy in enumerate(trigger_histories): print(i)
错误信息:
HttpResponseError: (InvalidQueryFilter) The provided query filter 'Status eq 'Succeeded',Status eq 'Succeeded'' is not valid or not supported. Code: InvalidQueryFilter Message: The provided query filter 'Status eq 'Succeeded',Status eq 'Succeeded'' is not valid or not supported.
问题原因
这是Azure Logic Apps Python SDK的分页逻辑bug导致的:当SDK的迭代器自动处理分页请求(遍历到当前页末尾时自动请求下一页)时,错误地将你传入的过滤条件重复追加到下一页的请求参数中,最终形成了两个相同条件用逗号拼接的非法格式。这种格式不符合Azure服务端要求的OData过滤规则,因此触发InvalidQueryFilter错误。
报错的迭代阶段不固定,是因为分页的页数和每页数据量由服务端返回决定,只有当SDK请求到某一页时触发了重复拼接过滤条件的逻辑,才会抛出错误。
内容的提问来源于stack exchange,提问作者jerry_k
相关产品推荐
相关产品推荐

