gpt4 book ai didi

c# - cosmos 中的创建/查询抛出取消异常

转载 作者:行者123 更新时间:2023-12-03 03:27:34 25 4
gpt4 key购买 nike

我正在使用 .net 6 隔离架构运行 v4 函数。使用以下方法在注入(inject)中实现我的 cosmosClient。 var cosmosClient = CosmosClient.CreateAndInitializeAsync(cosmosSettings?.Endpoint, cosmosSettings?.Key, 容器).Result; services.AddSingleton(cosmosClient);

在我的存储库类构造函数中,我有“

  public CosmosRepo(CosmosClient client, ILogger<CosmosRepo> logger,
IOptions<MyConfig> config)
{
_logger = logger;
_config = config.Value;
_container = client.GetContainer(_config.CosmosDb.DatabaseId, _collectionName);
}

此类中只有一次对 cosmos 的调用

  private async Task<ItemDbo> Save(ItemDbo itemDbo)
{
if (itemDbo is null)
{
throw new ArgumentNullException(nameof(itemDbo));
}

try
{
var result = await _container.UpsertItemAsync(itemDbo);
return result.Resource;
}
catch (CosmosException e)
{
_logger.LogCritical($"itemDbo upsert is failing for entity {itemDbo.Id} " + e.Message);
throw;
}
}

出于某种原因,我看到数千个创建/查询操作发生,而结果被取消。我的数据正在输入,但完全破坏了我对这个问题的见解和理解。upsert 是根据任务列表创建的。每次函数迭代大约有 25 个任务。只是

  List<Task> tasklist; 
loop 25X
tasklist.add(Save(itemDbo)).ContinueWith(i =>
{
if (!i.IsCompletedSuccessfully)
{
_logger.LogCritical($"Issue upserting the itemDbo data {itemDbo.Id}");
}
}));

await Task.WhenAll(updateAndInsertTasks);`

异常/错误似乎 100% 仅在这条路径上,这没有意义...dbs/cosmosdb/container/colls/itemDbo/docs

enter image description here

在我的日志中,我看到操作数量巨大且 ru 成本为零。 enter image description here

我的应用程序见解依赖项失败非常疯狂。 enter image description here

这尤其令人沮丧,因为我的任何 try/catch 的跟踪都是空的。我的异常也为空。我每小时运行大约 250 万个请求。

最佳答案

请参阅https://github.com/Azure/azure-cosmos-dotnet-v3/issues/3032#issuecomment-1227434296了解更多详情。

App Insight 屏幕截图中的详细信息并非来自 UpsertItem 调用,而是来自查询。代码的其他部分正在执行查询(GetQueryItemIteratorReadNextAsync)。

Application Insights 中的

已取消 是指超时的 HTTP 请求。这意味着您的应用程序在 HTTP 层上遇到连接问题,SDK 正在重试并最终成功,但从应用程序的角度来看,调查发生超时的原因非常重要。

请引用https://learn.microsoft.com/azure/cosmos-db/nosql/troubleshoot-dotnet-sdk-request-timeout获取潜在原因列表。如果它在应用服务上运行,它还具有一些可能有助于缩小原因范围的诊断工具。

有一件事是肯定的,请避免使用 .Result.GetAwaiter().GetResult() 或任何阻止异步调用的地方。

关于c# - cosmos 中的创建/查询抛出取消异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75356187/

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