禁用触发的 Azure WebJob

Posted

技术标签:

【中文标题】禁用触发的 Azure WebJob【英文标题】:Disable a Triggered Azure WebJob 【发布时间】:2018-03-03 09:41:54 【问题描述】:

我有一个由 webhook 触发的 Azure WebJob。由于...原因,我无法控制发送 webhook 的系统。每天发送一个 webhook。它是唯一由 WebApp 托管的 WebJob。

在测试期间,我想禁用此 WebJob,因此我停止了 WebApp。令我惊讶的是,即使 WebApp 被禁用,WebJob 也会运行。

所以我的问题有两个:

    在 WebApp 被禁用时触发 WebJob 的能力是故意的,还是我遇到了某种错误? 如果这是故意的,是否有办法禁用通过 Azure 门户触发的此作业?

如果我的问题的唯一解决方案是让 WebJob 检查配置值以确定是否运行,那就可以了。我只是认为必须有一种方法可以通过我缺少的门户禁用 WebJob。

【问题讨论】:

您究竟是如何执行 webhook 的 - 您使用的是 Azure Functions 吗?还是这完全是经典的 WebJobs SDK? 【参考方案1】:

您还可以在应用设置中设置 WEBJOBS_STOPPED 设置,尤其是在发布到开发槽时。

https://github.com/projectkudu/kudu/wiki/WebJobs

【讨论】:

【参考方案2】:

停止应用程序不会停止运行 WebJobs 的 scm 站点。有一种更高级的方法可以在 API 级别停止它,方法是在站点对象上设置 state=StoppedscmSiteAlsoStopped=true。这可以使用资源浏览器完成。

查看https://github.com/projectkudu/kudu/wiki/Full-stopping-a-Web-App了解更多详细步骤。

【讨论】:

以上是关于禁用触发的 Azure WebJob的主要内容,如果未能解决你的问题,请参考以下文章

Azure 触发的 Webjob - 检测 webjob 何时停止

使 Azure Webjob 计时器触发器不作为单例运行

取消单个 WebJob 执行

Azure webjob 似乎不尊重 MaxDequeueCount 属性

触发的网络作业是不是在所有实例上运行?

在 VSO 发布时触发初始化网络作业