我有一个大小约为 10000 条记录的数据数组。我的客户端 API 在一小时内只能处理 1000 条记录,这将引发异常。有什么方法可以在迭代过程中/一旦计数器达到 990 就返回事件并调用引入一小时等待时间的下一步?
等待步骤完成后,我的迭代是否会从中断的地方开始?
我有一个大小约为 10000 条记录的数据数组。我的客户端 API 在一小时内只能处理 1000 条记录,这将引发异常。有什么方法可以在迭代过程中/一旦计数器达到 990 就返回事件并调用引入一小时等待时间的下一步?
等待步骤完成后,我的迭代是否会从中断的地方开始?
选项 1:一种方法是使用 2 个地图状态:
[
[array1] //contains 1000 items,
[array2]
...
[arrayn]
]
这里是大体思路,还有很多改进的空间,比如你可以计算API调用花费了多少时间,然后从等待时间中减去它等等。
也可以代替 Map 状态,创建一个带有选择状态的 while 循环并实现相同的目的。
{
"StartAt": "SplitToArayofArrays",
"States": {
"SplitToArayofArrays": {
"Type": "Pass",
"Result": "Hello",
"Next": "IterateFristArray "
},
"IterateFristArray ": {
"Type": "Map",
"ItemsPath": "$.array",
"ResultPath": "$.array",
"MaxConcurrency": 1,
"Next": "Final State",
"Iterator": {
"StartAt": "IterateChildArray",
"States": {
"IterateChildArray": {
"Type": "Map",
"Iterator": {
"StartAt": "IterateChildArray",
"States": {
"IterateChildArray": {
"Type": "Pass",
"Result": "Hello",
"End": true
}
}
},
"Next": "PauseOneHour"
},
"PauseOneHour": {
"Type": "Wait",
"Seconds": 3600,
"End": true
}
}
}
},
"Final State": {
"Type": "Pass",
"End": true
}
}
}
选项 2:一小时内 1000 条记录意味着每 3.6 秒调用一个 API。所以在map状态下添加一个等待状态3.6秒。