资源创建的 Azure 应用服务超时

Azure App Service Timeout for Resource creation

我的 Azure 应用服务上的 Web 应用及其超时有问题。它提供了一个 API 在 Azure 资源组中创建 CosmosDB 实例。由于创建需要很长时间(约 5 分钟),应用服务超时(230 秒)迫使应用 return HTTP 响应 500,而 CosmosDB 创建成功。在该方法中,创建资源,然后对其执行一些操作。

        ICosmosDBAccount cosmosDbAccount = azure.CosmosDBAccounts
                    .Define(cosmosDbName)
                    .WithRegion(Region.EuropeNorth)
                    .WithNewResourceGroup(resourceGroupName)
                    .WithDataModelSql()
                    .WithSessionConsistency()
                    .WithDefaultWriteReplication()
                    .Create();

        DoStuff(cosmosDbAccount);

既然我读到不能增加超时,有没有简单的方法来等待资源创建并获得成功响应?

从您的代码来看,您正在使用.net sdk 来实现它。

the official SDK source code我们应该很清楚,源码中使用异步方式创建资源,最后通过检测ProvisioningState的状态值来判断是否创建完成。

在webapp中,我们设计的api应该是发送请求后立即return数据是合理的。如果在我们的api中,需要等待SDK中的异步或同步回调结果,然后return数据,肯定需要很长时间,所以设计不合理。

所以我的建议是用restapi来实现你的需求

  1. 创建(使用Database Accounts - Create Or Update

    数据库帐户创建或更新操作将异步完成。

    Check the response result.

  2. 检查属性中的 provisioningState (use Database Accounts - Get)

    如果provisioningStateSucceeded,则可知资源已创建成功

    如果想达到和portal一样的效果,建议加一个timer来获取provisioningState的状态值。