gpt4 book ai didi

对于每个新 Blob,Azure BlobTrigger 触发 > 5 次

转载 作者:行者123 更新时间:2023-12-02 07:39:31 26 4
gpt4 key购买 nike

以下触发器会在将 Blob(图像)上传到 Azure 存储后从 Blob 中删除 exif 数据。问题是每个 blob 的 blob 触发器至少触发 5 次。

在触发器中,通过向 Blob 写入新的数据流来更新 Blob。我原以为blob receipts将阻止针对该 Blob 进一步触发 Blob 触发器。

[FunctionName("ExifDataPurge")]
public async System.Threading.Tasks.Task RunAsync(
[BlobTrigger("container/{name}.{extension}", Connection = "")]CloudBlockBlob image,
string name,
string extension,
string blobTrigger,
ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name}");

try
{
var memoryStream = new MemoryStream();
await image.DownloadToStreamAsync(memoryStream);
memoryStream.Position = 0;
using (Image largeImage = Image.Load(memoryStream))
{
if (largeImage.Metadata.ExifProfile != null)
{
//strip the exif data from the image.
for (int i = 0; i < largeImage.Metadata.ExifProfile.Values.Count; i++)
{
largeImage.Metadata.ExifProfile.RemoveValue(largeImage.Metadata.ExifProfile.Values[i].Tag);
}

var exifStrippedImage = new MemoryStream();
largeImage.Save(exifStrippedImage, new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder());
exifStrippedImage.Position = 0;

await image.UploadFromStreamAsync(exifStrippedImage);
}
}
}
catch (UnknownImageFormatException unknownImageFormatException)
{
log.LogInformation($"Blob is not a valid Image : {name}.{extension}");
}
}

最佳答案

触发器的处理方式是通过将收据存储在容器 azure-webjobs-hosts 中来跟踪已处理的 Blob。任何没有收据的 Blob 或旧收据(基于 Blob ETag)都将被处理(或重新处理)。

由于您正在调用 await image.UploadFromStreamAsync(exifStrippedImage); 它会被触发(假设其尚未被处理)

关于对于每个新 Blob,Azure BlobTrigger 触发 > 5 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890057/

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