gpt4 book ai didi

c# - Azure Functions Blob 触发器不会处理所有 Blob

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

我的存储容器中有大约 35k blob 文件。其中一些是在部署函数之前较旧的,有些是在部署函数应用之后。

这是我的函数签名

 public async Task Run([BlobTrigger("portal/{filePath}")]Stream blob, Uri uri,
IDictionary<string, string> metadata, string filePath, ILogger log)
{
log.LogInformation($"{filePath}\n Size: {blob.Length} Bytes");

// rest of the code
}

我的理解是这个函数会持续处理所有新旧文件。但是当我在 Azure 门户上看到该日志时,就会发生这种情况。

  • 2020-01-21T09:02:56.103 [信息] 执行“watch-portal-blob”(成功,Id=37cfaf56-3be2-4e6f-9e46-3558389daf4f)
  • 2020-01-21T09:04:33 过去 1 分钟内没有新的跟踪记录。
  • //更多时间戳
  • 2020-01-21T10:51:34 过去 108 分钟内没有新的跟踪记录。
  • 2020-01-21T10:52:34 过去 109 分钟内没有新的跟踪记录。
  • 2020-01-21T10:53:34 过去 110 分钟内没有新的跟踪记录。
  • 2020-01-21T10:54:34 由于超时 120 分钟,日志流 session 已结束。

它随机处理几个文件,然后进入空闲状态,然后在几个小时后再次处理另外 20 个文件。谁能指出我正确配置 blob 触发器以处理所有现有 blob 以及新 blob 而不会造成任何中断?

仅供引用:我的所有 blob 都是简单的 XML 文件,每个文件不到 20 KB。它所做的只是读取 XML 验证并将其存储在 MongoDB 中。如果我在本地运行此作业,1 分钟内将处理至少 50 个文件,因此应该很久以前就可以完成 30k 个文件。 1 月 17 日星期五大约有 35k 个文件,今天 1 月 20 日仍有 32k 个文件(新增文件约为 2k)。这意味着它在 3 天内只处理了 5k 个文件。

最佳答案

我建议阅读Trigger - blob receiptsTrigger - polling

对于您的解决方案,当在 Blob 存储中创建/删除 Blob 时,应考虑使用 Azure 事件网格进行实时推送通知。

关于c# - Azure Functions Blob 触发器不会处理所有 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59840246/

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