【问题标题】:Azure WebJob not processing all BlobsAzure WebJob 未处理所有 Blob
【发布时间】:2015-01-07 06:38:26
【问题描述】:

我将压缩后的文件上传到 Azure 存储容器(输入)。然后我有一个 WebJob 应该拾取 Blob,解压缩它们并将它们放入另一个容器(输出)。两个容器使用相同的存储帐户。

我的问题是它不能处理所有 Blob。它似乎总是错过 1。今天早上,我将 11 个 blob 上传到输入容器,只有 10 个被处理并转储到输出容器中。如果我上传 4 则 3 将被处理。即使已上传 11 个 blob,仪表板仍将显示 10 次调用。看起来它不会被第 11 个 blob 触发。如果我只上传 1 个,它似乎会处理它。

我在标准模式下运行网站,并将 Always On 设置为 true。

我试过了:

这是我最新的代码。我做错了吗?

public class Functions
    {
        public static void Unzip(
            [BlobTrigger("input/{name}.gz")] CloudBlockBlob inputBlob,
            [Blob("output/{name}")] CloudBlockBlob outputBlob)
        {
            using (Stream input = inputBlob.OpenRead())
            {
                using (Stream output = outputBlob.OpenWrite())
                {
                    UnzipData(input, output);
                }
            }
        }

        public static void UnzipData(Stream input, Stream output)
        {
            GZipStream gzippedStream = null;

            gzippedStream = new GZipStream(input, CompressionMode.Decompress);
            gzippedStream.CopyTo(output);            
        }
    }

【问题讨论】:

  • (1) 您是否在仪表板中看到任何失败的调用? (2) 上传 blob 后您是否等待了一段时间?最多可能需要 10 分钟才能拾取 blob
  • (1) 我没有看到任何失败的调用,只有 10 个成功的调用。 (2) 我等了一个多小时。这些文件相当大(30 - 40 兆),处理可能需要 8 秒。这会是个问题吗?
  • 如果我重新启动 WebJob,它会拾取它错过的文件。
  • 您使用的是什么版本的 SDK?
  • 1.0.0 使用 Nuget 安装

标签: azure azure-webjobs azure-webjobssdk


【解决方案1】:

根据上面 Victor 的评论,这似乎是微软的一个错误。

编辑:我没有得到反对票。存在问题,Microsoft 将修复它。这就是为什么我的一些 blob 被忽略的答案......

“有一个关于某些存储日志事件被忽略的已知问题。这些事件通常是为大文件生成的。我们有一个修复程序,但它尚未公开。抱歉给您带来不便。- Victor Hurdugaci 1 月 9 日12:23"

【讨论】:

  • 此信息的来源在另一个 SO 评论之外?
【解决方案2】:

作为一种解决方法,如果您不直接收听 Blob 而是在中间带一个 Queue,当您写入 Input Blob Container 时,还要写一条关于队列中新 Blob 的消息,让WebJob 监听这个 Queue,一旦有消息到达 Queue ,WebJob Function 从 Input Blob Container 中读取 File 并复制到 Output Blob Container 中。 这个模型适合你吗?

【讨论】:

  • 虽然这可行,但我更喜欢触发器位于 blob 上。更多的工作部分=更多的失败。我将等到他们发布该错误的修复程序。
  • 能否请您更新到 NuGet 包的 1.0.1-alpha1 版本,如果这能解决您的问题,请告诉我们?更多详情见azure.microsoft.com/blog/2015/02/24/…
  • 嗨。我尝试了更新,它解决了我的问题。看起来现在所有 blob 都已处理完毕。
猜你喜欢
  • 2020-05-07
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多