发布后,Azure功能应用似乎不会触发

问题描述 投票:3回答:2

在Azure中,我开发了一个功能(应用程序服务),当新的csv文件放在特定的存储帐户中时会触发该功能。该功能是在Azure中开发的,每次上传新的csv文件时功能都没有问题。但是考虑到CI / CD,我决定将我的开发过程从Azure转移到Visual Studio(2017)。

代码在本地运行没有任何问题,但是一旦我将代码发布到Azure(通过VSTS),挑战就开始了。当新的csv文件上传到存储帐户时,似乎触发器未被激活。顺便提一下,该功能确实触发了,但我无法确定原因,或重新创建它。

为了使问题更容易理解,我将代码简化为Blobtrigger和一些日志记录。此外,我删除了VSTS中的构建,并通过Visual Studio 2017直接发布了我的构建,但结果相似。代码在本地工作正常,但在发布后,函数不会被触发(或者非常偶然地触发)。

我用过的代码:

using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;

namespace TestApp
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("csv-files-in/{name}.csv", Connection = "AzureWebJobsStorage")]Stream myBlob, string name, TraceWriter log)
        {
            log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
        }
    }
}

“AzureWebJobsStorage”指的是local.settings.json,其中定义了Blobstorage的端点。此设置自动部署到Azure,但即使我手动设置此连接,也不会触发该功能。经过多次尝试自己解决这个问题后,我决定向本网站上的聪明人询问建议。这是一个错误还是我错过了什么?在将此功能发布到Azure后,我该怎么做才能确保我的功能(可靠地)被触发?提前致谢。

visual-studio continuous-integration c#-3.0 azure-functions azure-blob-storage
2个回答
0
投票

你可能会打这个:

如果您的功能应用程序处于消费计划中,则在功能应用程序闲置时,处理新blob可能会延迟最多10分钟。要避免此冷启动延迟,您可以切换到启用了Always On的App Service计划,或使用其他触发类型。

取自Azure Blob storage bindings for Azure Functions

触发该功能的另一种解决方案是使用Event Grid

编辑: 另外,请注意BlobTrigger是一个轮询触发器。没有发现任何变化的时间越长,民意调查之间的时间就越长。这会给你一些延迟,可能会持续几分钟。

如果受监视的blob容器包含超过10,000个blob,则Functions运行时会扫描日志文件以监视新的或已更改的blob。此过程可能会导致延迟。在创建blob后几分钟或更长时间内,函数可能不会被触发。

更多信息在Azure Blob storage bindings for Azure Functions - polling


0
投票

我遇到了Azure Service Bus触发功能的问题,并通过查看Storage Explorer中的功能日志找到了问题。在我的情况下,这是一个错误命名的设置导致问题。

© www.soinside.com 2019 - 2024. All rights reserved.