【问题标题】:Azure function BlobTrigger not firing on new file in new subfolderAzure 函数 BlobTrigger 未在新子文件夹中的新文件上触发
【发布时间】:2019-01-16 17:00:59
【问题描述】:

我的 Azure 函数在一夜之间变得无响应(新的 Blob 触发器不会触发),当我在 Azure 门户 UI 中单击该作业时,它又开始工作了。

8 月 9 日 11:17 更新 - 当 $logs 每小时创建一个新子文件夹时,BlobTrigger 不会被这些新文件触发

创建新文件夹时,新文件夹不会触发 BlobTrigger 在该文件夹中创建文件。

结束更新

public static class Function2
{
    [FunctionName("Function2")]
    public static void Run([BlobTrigger("$logs/{name}", Connection = "ddavemstorage")]
    Stream blobStream, string name, TraceWriter log, ExecutionContext context)

我可以验证 $logs 文件是否定期写入(使用 Azure 存储资源管理器),但不会在一夜之间触发 BlobTrigger。

在 1016 拍摄的屏幕截图。30 分钟前,我查看了门户 Azure Function UI。然后它从 0600UTC(实际上是我的时间 0700)处理日志文件。它还处理了它错过的所有其他内容。

  • 计划:消耗:0 小
  • 运行时:1.0.11913.0(.NET 完整版)

这可能与 $logs 文件夹有关。这在几年前无法监控。 https://github.com/Azure/azure-webjobs-sdk/issues/715

$logs 文件夹正在按预期写入。

【问题讨论】:

标签: azure-blob-storage azure-functions


【解决方案1】:

在存储中,子文件夹是虚拟的,与实际的文件系统不同。针对您的问题的解决方法和可能的解决方案是通过提供子文件夹名称来包含完整路径,例如:"path": "rootcontainer/subfolder/{name}" in function.json。

最近也有一个类似的帖子讨论了同样的问题,你可以看到它here 了解更多信息。

【讨论】:

  • 感谢@Adam - 由于 $logs 文件夹根据数据和时间创建了许多虚拟子文件夹,这可能有效,但我找到了另一种看起来更容易的解决方法(在单独的答案中描述)。 . 除非我错过了什么
【解决方案2】:

通过每 5 分钟创建一个 TimerTrigger 类型的第二个函数,我发现第一个 BlobTrigger 函数现在可以按预期拾取文件。

public static class TestTimer
{
    [FunctionName("TestTimer")]
    // runs every 5 minutes
    public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, TraceWriter log)
    {
        log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
    }
}

【讨论】:

    猜你喜欢
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多