【问题标题】:Cycling azure-function (Blob-trigger)循环天蓝色功能(Blob-trigger)
【发布时间】:2017-06-27 15:21:52
【问题描述】:

我有 Azure 功能:blob 触发器。 当我在指定文件夹中添加或更改 blob 时,函数会更改此 blob。

但是有一个问题。通过函数更改 blob 后,它再次启动以处理已更改的 blob。然后再一次。因此,函数循环。

如何防止函数循环?

【问题讨论】:

  • 只要大声思考,您就可以将更改后的 blob 写入另一个容器。

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


【解决方案1】:

我可以做些什么来防止函数循环?

一种方法是存储修改后的 blob 的 ETag,并在修改 blob 之前比较 ETag。如果 ETag 已存在,则表示该 blob 刚刚被修改。我们不需要对这个 blob 做任何事情。以下代码供您参考。

public static void ProcessBlob([BlobTrigger("mycontainer/{name}")] CloudBlockBlob blob, string name)
{
    Console.WriteLine("before check:" + blob.Properties.ETag);
    if (CheckETagExists(blob.Properties.ETag))
    {
        //Do nothing

    }
    else
    {
        //Modify this blob
        //...
        //After modified this blob, save the ETag of this blob to a place.
        blob.UploadText("abcdefg");
        SaveETag(blob.Properties.ETag);
        Console.WriteLine("Save:" + blob.Properties.ETag);
    }
}

public static bool CheckETagExists(string etag)
{
    return ModifiedBlobETags.Contains(etag);
}

public static void SaveETag(string etag)
{
    ModifiedBlobETags.Add(etag);
}

public static List<string> ModifiedBlobETags = new List<string>();

示例将 ETags 保存到内存用于测试目的,我建议您将 ETags 保存到持久文件或 Azure 表服务以用于您的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多