带有Azure Blob存储操作的Azure逻辑应用程序:获取429 statusCode错误

时间:2019-02-26 09:04:13

标签: azure azure-storage azure-logic-apps azure-blob-storage

我正在将Azure Logic App与Azure BLOB存储触发器配合使用。

在Azure存储中更新或修改Blob时,我会从存储中提取创建或修改的Blob的内容,对数据进行一些转换,然后使用“创建内容-Azure Blob存储”操作将其作为新的Blob内容推送回Azure Storage。 LogicApp。

在将大量Blob插入(例如10000个文件)或更新到Blob存储中之后,Logic App会按预期为这些插入的Blob触发多次运行,但是进一步的Azure Blob操作因以下错误而失败:

{
  "statusCode": 429,
  "message": "Rate limit is exceeded. Try again in 16 seconds."
}

有人在Logic App中遇到类似问题吗?如果是,您能否建议可能的原因和可能的解决方法。

谢谢

3 个答案:

答案 0 :(得分:1)

好像您在Azure Blob托管API上点击了rate limits

Limit

答案 1 :(得分:0)

请检查此文档:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits

  

对于每个Azure订阅和租户,资源管理器最多允许   每小时12,000个读取请求和每小时1200个写入请求。

您可以通过以下方式查看使用情况:

getReviewListPaginator

response.Headers.GetValues("x-ms-ratelimit-remaining-subscription-reads").GetValue(0)

答案 2 :(得分:0)

请参考 Jörgen Bergström 的博客:http://techstuff.bergstrom.nu/429-rate-limit-exceeded-in-logic-apps/

从本质上讲,他说您可以设置多个执行相同操作的 API 连接,然后在逻辑应用代码视图中随机化连接以随机使用这些连接之一,这将消除速率超过问题。

一个例子(我使用的是 SQL 连接器)见下面我为逻辑应用设置的 API 连接。您可以对 blob 存储连接执行相同操作并使用类似的命名约定,例如blob_1, blob_2, blob_3, ... 等等。你可以创建任意多个,我为我创建了 10 个:

enter image description here

然后,您将在逻辑应用代码视图中替换所有当前的 blob 连接,例如

@parameters('$connections')['blob']['connectionId']

其中“blob”是您当前与以下内容的 blob api 连接:

@parameters('$connections')[concat('blob_',rand(1,10))]['connectionId']

然后确保在代码末尾添加所有“blob_”连接:

"blob_1": {
                    "connectionId": "/subscriptions/.../resourceGroups/.../providers/Microsoft.Web/connections/blob-1",
                    "connectionName": "blob-1",
                    "id": "/subscriptions/.../providers/Microsoft.Web/locations/.../managedApis/blob"
                },
"blob_2": {
                    "connectionId": "/subscriptions/.../resourceGroups/.../providers/Microsoft.Web/connections/blob-2",
                    "connectionName": "blob-2",
                    "id": "/subscriptions/.../providers/Microsoft.Web/locations/.../managedApis/blob"
                },
...

然后,逻辑应用会随机选择在运行期间使用哪个连接,从而消除 429 速率限制错误。

相关问题