在Azure中,我开发了一个函数(应用服务),当新的csv文件放入特定存储帐户时会触发该函数。该函数是在Azure中开发的,每次上传新的csv文件时都不会出现问题。但是考虑到CI/CD,我决定将我的开发过程从Azure迁移到Visual Studio(2017)。
代码在本地运行没有任何问题,但一旦我将代码发布到Azure(通过VSTS),挑战就开始了。当新的csv文件上传到存储帐户时,触发器似乎没有被激活。顺便说一句,该函数确实触发了,但我无法确定原因,也无法重新创建它。
为了使问题更容易理解,我将代码简化为Blobtrigger和一些html" target="_blank">日志记录。此外,我删除了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”是指定义 Blobstorage 终结点的 local.settings.json。此设置会自动部署到 Azure,但即使我手动设置此连接,也不会触发该函数。经过多次尝试自己解决这个问题,我决定向这个网站上的聪明人寻求建议。这是一个错误还是我错过了什么?如何确保我的函数在将其发布到 Azure 后(可靠地)被触发?提前致谢。
我在Azure服务总线触发的函数中遇到了这个问题,并能够通过查看存储资源管理器中的函数日志找到问题。在我的例子中,是一个名称不正确的设置导致了问题。
你可能会想到这个:
如果您的功能应用程序在消费计划中,如果功能应用程序处于空闲状态,则处理新blob可能会延迟10分钟。为了避免这种冷启动延迟,您可以切换到启用“始终打开”的应用程序服务计划,或使用不同的触发器类型。
取自Azure函数的Azure Blob存储绑定
触发函数的另一种解决方案是使用事件网格。
编辑:
另外,请注意,BobTrigger是一个轮询触发器。它找不到任何更改的时间越长,轮询之间的时间就越长。这会给你一些延迟,可能长达几分钟。
如果被监视的blob容器包含10,000个以上的blob,函数运行时将扫描日志文件,以监视新的或已更改的blob。这个过程可能会导致延迟。在blob创建后的几分钟或更长时间内,函数可能不会被触发。
有关Azure函数的Azure Blob存储绑定的更多信息-轮询
我已将 Azure 函数设置为运行 Blob 触发器,(因此,当将 Blob 添加到容器时,它应该触发)。在门户中打开函数应用之前,函数不会运行。然后,它将拾取已添加的任何 blob 并像往常一样处理它们。为什么需要在门户中打开函数应用才能启动我的作业?这几乎就像函数应用程序进入睡眠状态,然后在我浏览到它时唤醒。我该如何防止这种情况发生? 这是我的克朗
我创建了Azure blob触发函数,每当在Azure存储中发布任何文件时都会运行。当我从Visual Studio运行Azure函数时,它可以正常工作,但当我停止Visual Studio时它没有触发。从Visual Studio部署它时是否有任何特定设置?请帮助
当我的应用程序安装在我的相对较新的运行奥利奥8.0的华为上时,我的应用程序能够顺利地启动和运行。该应用程序在运行Lollipop的Nexus模拟器上也运行良好。然而,在我的另一部运行KitKat4.4的手机上,应用程序在启动时就崩溃了。 我认为问题是在添加默认NavigationDrawerActivity时发生的。 java.lang.RuntimeException:无法启动activity
我有一个现有功能应用程序,在应用程序中的用户操作之后,我需要将serviceBusTrigger函数部署到该应用程序。为了做到这一点,我一直在使用下面的post Deploy Azure函数from code(C#)。 如果我启用已经存在的使用VS部署的函数,该函数将激发并处理消息。 现有函数的function.json文件如下所示 使用上述方法部署的函数具有如下所示的function.json
我已经创建了一个blob触发器,它从一个blob接受一个文件,解压缩它,并使用streams将它移动到另一个blob。 我的代码如下所示 实际上,这将在本地运行时使用我的local.settings.json文件中的“azurewebjobstorage”:“UseDevelopmentStorage = true”。 然而,一旦我部署了这个应用程序,并使用Azure Storage Explor
我正在azure Http触发器函数中通过azure DocumentDB客户端查询CosmosDB数据。 我只想让oData在选择、筛选和排序等情况下具有乐观的性能。 在cosmosDB中,文档有很多字段,如果启用,会减少数据的大小。 这是针对Web API的。但我需要azure Http触发功能的应用程序