gpt4 book ai didi

c# - Azure Maps 批量地理编码状态 202 12 小时以上

转载 作者:行者123 更新时间:2023-12-03 04:15:02 26 4
gpt4 key购买 nike

我正在使用 RestSharp 以编程方式构建/制作/反序列化对 Azure Maps API 的调用以进行批量地理编码。目前正在使用 5 个地址批处理测试该过程 - 我希望在发布所有有关“几分钟内获得 10k 个地址”的帖子后,这一过程会很快进行。但是我昨天成功发出的请求仍然不可用,只显示documentation的“Accepted 202”状态表示它仍在处理...并且 status page 上没有显示任何中断。 .

我已经使用 Postman 复制了这些调用和结果,所以我不确定代码本身是否存在问题......但这并不是我第一次目光狭隘并忽略了一些明显的东西。

我的 POST 调用是使用下面的代码生成的,并返回一个 OK 状态,其中包含必要的 Location header 以及看起来像有效链接的内容。

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"
]}
}

我获取 Location header 值并使用下面的代码对其进行 GET 调用...

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;
}
}
}

而且它永远不会离开那个循环。当我对昨天的 POST 请求返回的 URL 进行硬编码时,它具有相同的行为 - 与在 Postman 中尝试与其余代码隔离时的情况相同。

有人有见解吗?

更新

我们发现,在更高层(S1 而不是 S0 层)创建新计划后,批处理调用没有明显的延迟。本质上仍然不是一个解决方案,因为这会让我们无法生产用于生产的产品,但可能是其他人的修复方案,直到接受的答案中提到的更新实现为止。

最佳答案

目前在预览版中这是可以预料到的。这将很快不再预览,并且速度会明显加快。

关于c# - Azure Maps 批量地理编码状态 202 12 小时以上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53854955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com