【问题标题】:How exactly does Azure stop Web Jobs?Azure 究竟是如何停止 Web 作业的?
【发布时间】:2015-10-31 00:39:43
【问题描述】:

我们在设置为 AlwaysOn 的 WebApp 下运行连续的 Web 作业。

其中一个作业(可能写得不好)被设置为循环运行,只要 Azure 存储队列中有项目,并且此队列的填充速度快于作业可以消耗的速度 - 实际上使循环无限。我有时想手动停止这项工作。

在 Azure 管理门户 (manage.windowsazure.com) 中,我“停止”了作业并重新启动了 WebApp,但该作业似乎仍在运行。 Azure 究竟是如何停止/终止作业的?

显然,它在作业目录中创建了一个“disable.job”文件以指示不要运行它,但当然直到下次启动作业时才会检查它,因为它处于无限循环中,所以永远不会发生这种情况。重启 WebApp 似乎也无济于事。

唯一似乎有帮助的是当我们重新部署时,其中包括与暂存环境交换(关闭前一个与正在运行的作业)。

【问题讨论】:

  • @Anton 虽然它很相似,但它不是同一个问题。我问如何 Azure 停止工作,但来自 Kudu 开发人员之一 Amit 的问题和回答有助于澄清。我将我的发现作为答案发布。

标签: azure azure-webjobs


【解决方案1】:

可以在kudu source 中找到(部分)回答我关于 Azure 如何停止作业的问题:

    private bool IsDisabled
    {
        get { return FileSystemHelpers.FileExists(_disableFilePath) || Settings.IsWebJobsStopped(); }
    }

所以如果disable.job 存在,或者WEBJOBS_STOPPED 在应用程序设置中设置。

虽然我已经知道这一点,但在我们的特殊情况下它并没有帮助。事实证明,这些作业正在交换的(并且也停止了!!)staging 环境中运行。作业将继续在暂存环境中运行,即使在插槽停止后也是如此。对我来说,这是 Azure 的一个严重错误,但似乎没有人承认这是一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2021-08-15
    • 2012-06-08
    • 2011-10-11
    • 2013-07-05
    • 1970-01-01
    相关资源
    最近更新 更多