【问题标题】:Azure Functions Blob Trigger doesn't process all blobsAzure Functions Blob 触发器不处理所有 Blob
【发布时间】:2020-05-07 11:07:42
【问题描述】:

我的存储容器中有大约 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 分钟,日志流会话已结束。

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

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

【问题讨论】:

  • 我认为它只处理新添加的文件
  • 我也检查过,它没有处理过去 3 天上传的文件,但是当我在门户上观看实时日志时,它正在处理 2019 年 10 月以来的文件

标签: c# azure azure-functions azure-blob-storage


【解决方案1】:

我确实建议阅读Trigger - blob receiptsTrigger - polling

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

【讨论】:

    【解决方案2】:

    在后台,它使用一些事件通知来触发您的功能。这意味着您的旧 blob 不会被触发,除非您随后更改某些内容(例如元数据)。

    作为替代方案,您可以创建一个逻辑应用并使用 Azure 存储连接器 + 列出 blob 操作,然后在传递每个 blob 的工作流中链接您当前的 Azure 函数。

    https://docs.microsoft.com/en-us/connectors/azureblobconnector/#list-blobs

    【讨论】:

    • 不确定我是否理解您的建议。你是说创建另一个应用程序,我调用 ListAllBlobs 并调用当前 processBlob API?
    • 这是一个选项。正如我所说,您的旧 blob 不会被触发,因为那时没有关联的事件(在您编写了 azure 函数之后)。您宁愿列出所有 blob 并以另一种方式触发您的函数或进程
    • 如果我删除旧的 blob 并重新上传(不对文件进行任何更改)到容器会怎样。那些应该被处理吧?
    猜你喜欢
    • 2018-10-03
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 2020-07-12
    • 2021-02-26
    • 2020-11-26
    • 2017-04-21
    相关资源
    最近更新 更多