交换到新插槽后,连续的Azure Web作业是否重新启动?

时间:2015-08-21 21:09:09

标签: azure deployment azure-web-sites azure-webjobs azure-webjobssdk

当我在Azure中交换部署插槽时,是否会重新启动Web作业?如果是,是否使用目标配置或源配置值重新启动?

在我的情况下,我不希望Web作业在暂存插槽中运行。为了解决这个问题,我有以下代码:

public static void Main()
{
    // Only run web jobs when configured
    bool enableWebJobs = false;
    bool.TryParse(ConfigurationManager.AppSettings["EnableWebJobs"], out enableWebJobs);

    if (enableWebJobs)
    {
        var host = new JobHost();
        host.RunAndBlock();
    }
    else
    {
        // Sleep so the Azure web jobs platform doesn't try to continually restart the process
        while (true)
        {
            Thread.Sleep(60000);
        }
    }
}

我只是不确定在使用正确的AppSettings进行交换后是否会重新启动Web作业。如果没有,那么这根本不起作用,因为EnableWebJobs将保持为假。

1 个答案:

答案 0 :(得分:3)

配置也被交换,因此您的代码将无法正常工作。

使用Amit Apple的帖子 How to prevent Azure webjobs from being swapped in Azure website production <--> staging slots

  

要阻止WebJobs在暂存插槽上运行,您可以添加应用   设置名为WEBJOBS_STOPPED并将其设置为1(在天蓝色门户中)

我已使用此粘滞式插槽设置禁用了暂存的webjobs。

查看Kudu面板中的webjobs日志,当部署应用程序时,webjobs会启动并且不受实际交换的影响(AFAIK只是负载均衡器路由到新的live / stage)。

编辑:我错了。作为交换的一部分,重新​​启动。 (见Understanding site swaps)即:

以下是您将源广告位(让我们称之为“暂存广告”)换成目标广告位(制作广告)时会发生的情况。

  1. 首先,Staging网站需要进行一些设置更改 应用程序设置和连接字符串标记为&#39; slot&#39;。那里 也可能需要与源控制相关的其他更改 应用。 这会导致暂存网站重新启动 ,这很好。

  2. 接下来,通过发送请求,Staging站点变得暖和起来 它的根路径(即&#39; /&#39;),等待它完成。

  3. 现在Staging网站很热,它会被转换为Production。 没有停机时间,因为它直接从一个温暖的站点到 另一个。

  4. 最后,以前是生产的网站现在正在暂存 需要应用一些设置,导致它重新启动。再次,这 很好,因为它发生在临时站点。