gpt4 book ai didi

azure - 部署连续的Azure WebJob和WebApp会阻止App

转载 作者:行者123 更新时间:2023-12-03 02:25:30 29 4
gpt4 key购买 nike

我目前正在通过 Azure DevOps 将一个 Azure WebJob 和相应的 Web 应用部署到 Azure。我的 Web Job 启动主要取自各种示例,例如 https://github.com/Azure/azure-webjobs-sdk/tree/dev/sample/SampleHost

public class Program
{
public static async Task Main()
{
IConfigurationRoot configRoot = null;

var reg = new ServiceRegistry();
reg.Scan(
scanner =>
{
scanner.AssembliesFromApplicationBaseDirectory();
scanner.LookForRegistries();
});

var builder = new HostBuilder()
.ConfigureWebJobs(
f =>
{
f.AddAzureStorageCoreServices();
f.AddTimers();
})
.ConfigureAppConfiguration(
(context, configurationBuilder) =>
{
configurationBuilder.Sources.Clear();
configRoot = configurationBuilder
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false, true)
.Build();
})
.ConfigureLogging(
(context, b) =>
{
b.AddApplicationInsightsWebJobs(
cfg =>
{
cfg.InstrumentationKey = "xxxx";
});

b.AddConsole();
})
.UseConsoleLifetime();

var host = builder
.UseLamar(reg)
.Build();

using (host)
{
var container = host.Services.GetService<IContainer>();
var section = configRoot.GetSection(AppSettings.SectionKey);
var settings = section.Get<AppSettings>();

container.Configure(
cfg =>
{
cfg.AddSingleton(settings);
});

await host.RunAsync();
}
}
}

据我了解,由于我有第二个具有 crontriggers 等功能的文件,因此网络作业必须以连续模式运行才能保持事件状态。由于我想将 webjob 部署为 Web 应用程序的一部分,因此我在发布构建上添加了 YAML 任务,如下所示:

  - task: DotNetCoreCLI@2
displayName: Publish Web Jobs
inputs:
command: publish

publishWebProjects: false

projects: 'Backend/Sources/Application/WebJobs/xxx.WebJobs.csproj'

arguments: '--configuration $(BuildConfiguration) --output $(PublishPath)/App_Data/jobs/continuous/WebJobs /p:DeleteExistingFiles=True'

zipAfterPublish: false

modifyOutputPath: false

该任务的一个变体取自 https://www.rahulpnath.com/blog/azure-webjobs-dotnet-core-build-depoy/

构建完成后,我通过任务“Azure 应用服务部署”的默认配置一次性部署 Web 应用程序和作业。

有趣的是:如果我开始使用此任务和代码,Web 应用程序将无法再正确部署。检查日志,我发现 Web 作业实际上已部署并立即开始工作。因此,我认为,网络作业现在有点阻止网络应用程序完全部署,因为它已经在运行(并且可能锁定东西?)

我发现的大多数例子都是以前版本的网络作业,而且我没有找到任何提到这个问题的例子。有没有可能,这种组合不起作用,我需要单独部署 Web 应用程序和 Web 作业,或者还有其他问题吗?

最佳答案

哇,这很棘手:所以我最终完成了两个单独的部署任务: enter image description here

对于 WebJobs,我定义了一个虚拟路径: enter image description here

大多数人写道,网络作业必须位于 wwwroot/App_Data 下,这是错误的。根据https://github.com/Azure/app-service-announcements/issues/84 ,site/jobs/也正常工作。首先部署 Web 作业也很重要,否则 Web 应用程序数据会丢失(我不知道为什么)。此外,随着应用程序的部署和启动变得更慢,我必须在运行一些 Postman 测试之前插入一个等待任务。

关于azure - 部署连续的Azure WebJob和WebApp会阻止App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67202230/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com