假设我在 Azure 中有一个 Web 应用程序,可以自动部署连续的 Web 作业。此 Web 应用程序还有一个 生产
和 staging
插槽,并且站点部署到 staging
,之后会发生交换(手动或自动)以移动最新进入生产
槽。
此外,我们假设生产
Web作业正在运行和处理,并且通常在交换开始之前完成其工作。当部署到 staging
时,由于遵循 WEBJOBS_STOPPED = 1
配置设置,最新的 Webjob 不会启动。
但是,交换完成后,之前处于生产
状态且现在处于暂存
状态的Web作业是否继续运行?如果没有的话,怎么停止呢?什么时候停止?当正在运行的 Web 作业从生产
槽移动到暂存槽
时,什么时候开始使用WEBJOBS_STOPPED
标志?
我无法同时运行两个 Web 作业,并且不清楚交换周围的行为是什么...使用 Web 作业设置中的 is_singleton
属性可以轻松实现连续单例,但是“垂直”围绕交换同时运行的网络作业似乎没有被清楚地理解或记录。
最佳答案
关键是在 Staging 上设置 WEBJOBS_STOPPED=1
插槽设置,以便它始终为 Staging 设置,而不是为 Production 设置。这将保证您不会同时运行两者(除了在交换转换期间可能运行几秒钟)。
参见this post有关交换如何工作的更深入的信息。
关于azure - 将 Azure 生产中的连续 Webjob 交换到暂存槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46573712/