Azure WebJob 在删除且 Web 应用程序停止后运行

问题描述 投票:0回答:1

我们正在测试一个新的 WebJob,以在 Azure Web 服务中运行一些后台进程。 WebJob 有一个 TimerTrigger,每 1 分钟运行一次。

我们正处于开发的早期阶段,所以现在代码所做的就是每次运行时记录到我们的数据库。

我们看到记录被插入到我们的数据库中,因此我们删除了 WebJob 来测试其他一些事情。我们发现,通过门户删除 WebJob 后,记录继续插入到数据库中。我们继续完全停止应用程序服务,但记录仍然继续插入数据库中。

This SO post 建议通过 azure cli 检查活动,但是,返回一个空数组(如果我们将“触发”交换为“连续”,则相同):

az webapp webjob triggered list --name my-app-name --resource-group my-rg-name

WebJob 已被删除,Azure 应用服务已停止大约一个小时,但我们仍然每分钟都会将记录插入到数据库中。

我们的程序并不比此处提供的 .NET Core 示例复杂多少(GitHub Azure WebJobs SDK 扩展)

我们有一个简单的Program.cs:

var builder = new HostBuilder(); builder.ConfigureWebJobs(b => { b.AddTimers(); }); builder.ConfigureLogging((context, b) => { b.AddConsole(); }); var host = builder.Build(); using (host) { await host.RunAsync(); }
函数.cs

public async Task Run([TimerTrigger("0 */1 * * * *")] TimerInfo myTimer, ILogger logger) { var connection = _db.Connection; await connection.ExecuteAsync("INSERT INTO webjob_logs VALUES ('test', GETDATE())"); }
设置.作业

{ "schedule": "0 */1 * * * *" }

更新

重新部署 WebJob 并重新启动 Web 应用程序后,但它仍在运行旧代码:

另外,不确定这是否相关,但我在 WebJob 详细信息中看到了这一点:

azure azure-webjobs azure-webjobssdk
1个回答
0
投票
我们几乎没有什么选项可以删除正在运行的 Web 作业。

一种是手动删除。

另一种是使用 Azure CLI 命令,您已经按照我之前的

answer完成了该命令。

还有一个选项是删除创建 Web 作业时上传的整个文件。

每当创建 Web 作业时,都会在 KUDU 控制台

Jobs

 文件夹中创建一个名为 
site/wwwroot/App_Data
 的新文件夹。

enter image description here

    它包含所有具有与 WebJob 相关的所需
  • exe/pdb/dll
     文件的作业。

enter image description here

    删除具有要删除的特定 WebJob 名称的整个文件夹。
有时,即使删除 WebJobs 后,这些作业也会在我们不知情的情况下在后台运行。

MSDoc 中所述,在应用服务应用程序设置中将键 WEBJOBS_STOPPED

 设置为值 
1
 以停止 Web 作业。

enter image description here

感谢@

IKriKan的步骤。

如果您对网络作业仍有任何问题,您可以在以下位置查看作业详细信息

Diagnose and solve problems

 => 
Availability and Performance
 => 
WebJob Details

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.