将 Azure 生产中的 Continuous Webjob 交换到暂存槽

Swap Continuous Webjob in Azure production to staging slot

假设我在 Azure 中有一个 web 应用程序可以自动部署一个连续的 web 作业。此 Web 应用程序还有一个 productionstaging 插槽,站点部署到 staging,之后发生交换(手动或自动)以将最新的移动到 production插槽。

此外,我们假设 production webjob 是 运行 并在交换开始之前处理并通常执行它的工作。当部署到 staging 时,最新的 webjob 不会启动,因为 WEBJOBS_STOPPED = 1 配置设置被接受。

但是,交换完成后,之前在 production 现在在 staging 的 webjob 是否继续 运行?如果没有,它如何停止?什么时候停止?当 运行 webjob 从 production 插槽移动到 staging slot 时,WEBJOBS_STOPPED 标志何时开始生效?

我不能同时拥有两个 webjobs 运行 并且不清楚交换的行为是什么......使用 is_singleton [=36= 很容易连续单例] 在 webjob 设置中,但是 "vertical" webjobs 运行 并没有出现同时交换被清楚地理解或记录。

关键是让 WEBJOBS_STOPPED=1 成为登台上的槽位设置,这样它始终是为登台设置的,而不是为生产设置的。这将保证您不会同时拥有两个 运行(除非在交换转换期间可能有几秒钟)。

有关交换如何工作的更深入的信息,请参阅 this post