具有计时器触发器的 Azure Web 作业未在所有部署上执行功能

标签 azure azure-functions azure-web-app-service

我有一个带有计时器触发器的网络作业,该作业设置为在格林尼治标准时间午夜执行。 Web 作业是一个 .NET Core Console 项目,它通过 DevOps 发布管道部署到三个不同的应用服务实例。在部署 Web 作业的第一个环境中,该作业按计划触发,可执行文件运行,并显示 Kudu 日志语句指示成功。在其他两个环境中,Web 作业会按计划触发,但可执行文件不会运行,如没有显示成功的日志语句所示。在所有三种环境中,日志都表明 Web 作业已触发并且已找到函数方法,但只有最初部署它的应用实例执行该逻辑。

在不同的应用服务环境中运行相同的 Web 作业时,是否需要采取任何措施来确保每个作业成功执行?我认为,由于每个作业的应用程序设置都指向相同的存储帐户,因此这与其有关,但说实话,这是我创建的第一个网络作业,所以我不确定。

我尝试在门户中手动启动 Web 作业,但由于它是一个计时器作业,我不相信它会以这种方式成功执行

最佳答案

正如@Thiago Custodio所说是正确的,

each environment should have its own storage account in order to proper execute the triggers

通常,由于其单例锁定功能,计时器触发器 Web 作业将在任何时间点运行单个实例。

当为计时器触发器 Web 作业或 Azure 函数启 Action 业主机时,会激活此单例锁定功能,以确保仅运行单个实例,或者如果单例锁定功能意味着未获取 Blob 租约,则会生成另一个实例正在运行的计时器触发功能或 Web 作业 - similar functionality我之前已经复制过,但没有获得多个实例。

因此,为每个环境(如开发人员、登台/测试、生产)拥有单独的存储帐户可以方便地跟踪日志,这里是 GitHub Azure Web 作业计时器触发器单例锁 article其中给出了不同环境的Job Host配置代码。

关于具有计时器触发器的 Azure Web 作业未在所有部署上执行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74620238/

相关文章:

azure - 在web api 2 azure网站中将https www重定向到https非www

azure - 是否有办法将对 Azure blob 的访问限制为单个 IP?

azure - 如何使用azure函数时间触发器获取所有blob存储(新的或更新的)

azure - 将请求路由到不健康的 (503ing) 实例?

azure - 我是否对 azure 函数期望过高的可扩展性?

使用存储队列绑定(bind)进行 Azure 函数应用程序扩展

Azure - 静态 HTML/CSS/JS 作为 Web 应用程序中的虚拟目录

Azure Bot 下载源代码按钮不起作用

Azure 日志分析 : Error while configuring custom data

azure - 如何获取 Azure 云服务的 SSL 证书