gpt4 book ai didi

c# - Azure Function 未按预期立即触发

转载 作者:行者123 更新时间:2023-12-02 23:17:29 24 4
gpt4 key购买 nike

我们有一个 Azure 函数,该函数应该在文件插入到我们的 Azure 存储 blob 之一后立即运行。我们发现,文件出现在存储 blob 中后,它实际上需要 1-10 分钟才能运行。我们无法确定,但它似乎每 10 分钟轮询一次存储 blob 以查找更改,而不是在插入时立即运行。

这是触发器的代码; order-requests blob 是插入文件的位置:

using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Blob;


namespace Integration
{
public static class IntegrationFunction
{
[FunctionName("AbcIntegration")]
public static async Task Run(
[BlobTrigger("order-requests/{name}", Connection = "BlobStorageConString")] CloudBlockBlob blob,
[Blob("order-responses/{name}")] CloudBlockBlob outputBlob,
ILogger log)
{
var result = await new IntegrationService().IntegrateTask(blob, outputBlob);



log.LogInformation(result);
}
}
}

我们如何确保函数在文件命中 blob 时立即运行?

最佳答案

经过一些研究后,有两种选择可以解决此问题:

  1. 使用事件网格触发而不是 Blob 触发:https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-grid?tabs=csharp
  2. 确保该功能应用属于应用服务计划(而非消费计划),并确保该应用设置为“始终开启”。

实现#2 对我们来说是有效的。我们采用了消费计划,最多可能需要 10 分钟才能触发功能应用程序的触发器。我们将应用程序切换到应用程序服务计划,将其设置为“始终开启”,现在当文件命中 blob 时,我们可以立即执行。

请务必注意,Always On 应用服务计划会产生额外费用。消费计划背后的想法是仅在功能运行时付费。尽管冷启动可能需要长达 10 分钟的时间才能执行,但这是有其自身成本的。

关于c# - Azure Function 未按预期立即触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59989670/

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