Azure web app service 如何防止Azure Web作业在Azure网站制作中被交换<--&燃气轮机;暂存槽
我有一个Azure网站,有一个生产和暂存槽,有多个实例 我在该站点上运行了几个Azure WebJob,其中一些是被触发的,另一些是连续的 我知道触发的webjobs只能在一个实例上运行一次 我当前的设置是:Azure web app service 如何防止Azure Web作业在Azure网站制作中被交换<--&燃气轮机;暂存槽,azure-web-app-service,azure-webjobs,Azure Web App Service,Azure Webjobs,我有一个Azure网站,有一个生产和暂存槽,有多个实例 我在该站点上运行了几个Azure WebJob,其中一些是被触发的,另一些是连续的 我知道触发的webjobs只能在一个实例上运行一次 我当前的设置是: 生产站点除了从暂存交换之外没有其他部署 暂存网站设置为从bitbucket连续部署 Webjobs是使用“发布到Azure”从VS内部部署到生产槽的(因为AFAIK不支持基于时间表的Webjobs的连续部署) 网站的VS解决方案与包含webjobs的VS解决方案不同 我注意到当我交换生
- 生产站点除了从暂存交换之外没有其他部署
- 暂存网站设置为从bitbucket连续部署
- Webjobs是使用“发布到Azure”从VS内部部署到生产槽的(因为AFAIK不支持基于时间表的Webjobs的连续部署)
- 网站的VS解决方案与包含webjobs的VS解决方案不同
感谢Azure网站部署槽不是一个容易理解的概念,再加上WebJobs,它变得有点困难 我建议阅读下面的文章以更好地了解部署槽(包括评论部分以获取有用信息) 要更好地了解WebJobs是如何工作和部署的,请参阅本文- 重要的是要了解:
WebJobs\u STOPPED
的应用程序设置,并将其设置为1
(在azure门户中)。(). 确保此应用程序设置粘贴到插槽,否则它将传播到生产插槽。以下是Amit对使用PowerShell的#3的回答
Function Disable-AzureSlotJobs($SiteName, $Slot = 'staging')
{
$site = Get-AzureWebsite -Name $SiteName -Slot $Slot
$site.AppSettings.WEBJOBS_STOPPED = "1"
Set-AzureWebsite -Name $SiteName -Slot $Slot -AppSettings $site.AppSettings
Set-AzureWebsite -Name $SiteName -SlotStickyAppSettingNames @("WEBJOBS_STOPPED")
}
'MySite1', 'MySite2', 'MySite3' | % { Disable-AzureSlotJobs $_ }
到目前为止,解决这个问题最简单的方法是为您的Web作业使用一个单独的Web应用程序。只需将Worker Web应用程序放在同一Azure服务计划上,您将在同一台计算机上运行两个单独的Web应用程序 网络应用
web app worker感谢您的回复。我不知道直接部署WebJob是不好的,VisualStudioAzure集成实际上通过“发布到Azure”来鼓励它VS中WebJob项目中的按钮。看起来至少它不应该让遵循
错误做法变得那么容易
是否有地方可以向团队提供反馈?Git部署对我来说是一个巨大的胜利,它是WebJobs与CloudServices的较量。这稍微削弱了这个故事,因为这意味着需要重新部署网站来更新WebJob。“发布到Azure”对于WebJob和对于网站是一样的,有问题的做法是将git部署和“发布到Azure”(msdeploy)混合在一起,最好使用一种部署方法。明白了,你知道吗,如果我将所有的webjob添加到与我的网站(git部署)相同的VS解决方案中,当我提交webjob中的更改时,它是否会重新部署我的网站,即使唯一的更新是一个webjob?其他未更新的webjob呢?我担心如果它是一个包含所有webjobs和一个网站的单一解决方案,部署需要多长时间。它将构建web应用程序和webjobs,但只部署(复制)已更改的文件。@AmitApple,我正在使用设置为1
的webjobs\u STOPPED
,但它不会停止webjobs,它们仍在舞台上运行。你知道这是否真的有效吗?或者它是否显示为在门户中运行,但实际上并未运行?如果您没有任何/许多应用程序设置,这将非常有用。对我来说不幸的是,我大约有60岁。我不想记住保持两个应用程序设置在同步手动设置应用程序是一个非常危险的做法,考虑使用ARM模板自动化他们。对于这种情况下,我必须保持配置设置在两个地方。