我使用ADF的复制活动和REST 链接服务进行REST调用,并从API链接中获取json数据。单个API链接运行良好,但当我尝试在"TOO_MANY_REQUESTS". ForEach activity中使用多个API链接时,由于HttpStatusCode 429 (即HttpStatusCode 429),一些链接无法获得数据。
Q:如何通过添加延迟或类似的方法来解决这个问题,这样我的API调用就不会超过限制?
请参考这里的错误图像:https://i.stack.imgur.com/4DJDe.jpg
注意: API配额限制为每分钟10个请求。
我尝试过的解决方案:
ForEach活动循环通过这个输入参数:
...
{
"sourceBaseURL":"http://api.xyz.io",
"sourceRelativeURL":"abcde/abc",
"sinkFileName":"test/file_name1.json",
"requestBody": "{\"abc\": [1,2,3]}"
},
{
"sourceBaseURL":"http://api.xyz.io",
"sourceRelativeURL":"abcde/abc/cde",
"sinkFileName":"test/file_name2.json",
"requestBody": "{\"abc\": [1,2,3]}"
},
...但是我想知道有什么方法可以增加一些延迟作为标题来避免这个限制吗?
Retry-After: 60作为头文件,但这不起作用。图片参考:https://i.stack.imgur.com/yzKFf.jpg
我的配置在复制活动中的JSON:
"isSequential": true,
"activities": [
{
"name": "INGEST_API",
"type": "Copy",
"dependsOn": [],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "RestSource",
"httpRequestTimeout": "00:01:40",
"requestInterval": "00.00:00:00.010",
"requestMethod": "POST",
"requestBody": {
"value": "@item().requestBody",
"type": "Expression"
},发布于 2022-04-22 18:22:58
因为你的限制是每分钟10雷克。您应该选择一个< 10的数字,比如每分钟8 req作为API的命中率。
因此,模式是从管道向API (非顺序)发送8个请求。此管道只能使用for循环发送8个请求。也有60秒的重试策略。
在for循环之后,添加一个等待活动60秒,然后完成。
这个管道是从另一个管道中调用的,它选择一个8次请求的批处理,并在一个循环中调用这个管道。执行管道策略是等到完成。
https://stackoverflow.com/questions/71969903
复制相似问题