Azure地图批处理地理编码状态202 12多小时后



我正在使用RestSharp来编程构建/make/quelealize呼叫对Azure Maps API进行批处理地理编码。目前,用5个地址测试该过程 - 在所有关于" 10K地址"的帖子之后,我希望很快就会快速进行。但是我昨天成功提出的请求仍然不可用,只显示了该文档说的"接受的202"状态,这意味着它仍在处理...并且状态页面上没有断电。

我已经使用Postman复制了这些呼叫和结果,所以我不确定是否有代码问题...但是这不是我第一次获得隧道视觉并忽略了一些明显的东西。

我的帖子呼叫与下面的代码生成,并带有带有有效链接的必要位置标头的确定状态。

public RestRequest CreateBatchRequest()
{
    var request = new RestRequest($"{_batchAddressEndpoint}subscription-key={_apiToken}", Method.POST);
    request.AddQueryParameter("api-version", _version);
    var batchRequestBody = GenerateQueryBatch();
    var requestBodyJson = JsonConvert.SerializeObject(batchRequestBody);
    request.AddHeader("Content-Type", "application/json");
    request.AddParameter("undefined", requestBodyJson, ParameterType.RequestBody);
    return request;
}
protected AzureBatchRequest GenerateQueryBatch()
{
    var requestBody = new AzureBatchRequest();
    foreach (var address in Addresses)
    {
        var addressString = $"{address.Address}, {address.City}, {address.State}";
        if (!string.IsNullOrEmpty(_country))
            addressString = $"{address.Address}, {address.City}, {address.State}, {_country.ToUpper()}";
        requestBody.Queries.Add($"?query={addressString}&limit={_resultLimit}");
    }
    return requestBody;
}

这为我提供了一个似乎与文档匹配的请求的身体参数(由于隐私原因隐藏了实际地址,但已成功地使用了其他服务)...

{
    undefined={"queries":[
        "?query=123 MAIN ST, LOS ANGELES, CA&limit=3",
        "?query=123 MAIN ST, PLEASANTVILLE, CA&limit=3",
        "?query=123 MAIN ST, STOCKTON, CA&limit=3",
        "?query=123 MAIN ST, SAN DIEGO, CA&limit=3",
        "?query=123 MAIN ST, REDDING, CA&limit=3"
    ]}
}

我获取位置标题值,并使用下面的代码与它进行通话...

public List<Coordinate> DeserializeBatchResponse(RestResponse response)
{
    var batchLink = response.Headers.Where(header => header.Name.Equals("Location")).FirstOrDefault();
    var request = new RestRequest(batchLink.Value.ToString(), Method.GET);
    var batch = SendRequest(request);
    if (batch.StatusCode == System.Net.HttpStatusCode.Accepted)
    {
        var isProcessing = true;
        while (isProcessing)
        {
            Thread.Sleep(TimeSpan.FromSeconds(60));
            request = new RestRequest(batchLink.Value.ToString(), Method.GET);
            batch = SendRequest(request);
            if (batch.StatusCode != System.Net.HttpStatusCode.Accepted)
                isProcessing = false;
        }
    }
}    

,它永远不会离开那个循环。当我对昨天的帖子请求中返回的URL进行编码时,它具有相同的行为 - 就像在邮递员中尝试与我的其余代码隔离时一样。

有人有洞察力吗?

update

我们发现,在更高层(S1而不是S0层)创建新计划后,批次调用没有明显的延迟。本质上,仍然不是解决方案,因为为生产目的而将我们从产品中出价,但可能是对他人的解决方案,直到被公认答案中提到的更新实现为止。

此刻预计这是预期的。这将很快摆脱预览,并且将更快。

最新更新