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

标签 azure azure-webjobs azure-webjobssdk

我们正在测试一个新的 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 示例复杂多少 here (GitHub Azure WebJobs SDK Extensions)

我们有一个简单的 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 from Azure Portal

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

最佳答案

我们几乎没有什么选项可以删除正在运行的 Web 作业。

一种是手动删除。

另一种是使用 Azure CLI 命令,您已经按照我之前的 answer 完成了该命令。 .

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

每当创建 Web 作业时,都会在 KUDU 控制台 site/wwwroot/App_Data 文件夹中创建一个名为 Jobs 的新文件夹。

enter image description here

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

enter image description here

  • 删除具有您要删除的特定 Web 作业名称的整个文件夹。

有时,即使删除 Web 作业后,这些作业也会在我们不知情的情况下在后台运行。

MSDoc 中所述,在应用服务应用程序设置中将键 WEBJOBS_STOPPED 设置为值 1 以停止 WebJobs。

enter image description here

谢谢@IKriKan以获得提示。

如果您对 Web 作业仍有任何问题,可以在以下位置查看作业详细信息 诊断和解决问题 => 可用性和性能 => WebJob 详细信息

enter image description here

关于Azure WebJob 在删除和 Web 应用程序停止后运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77019665/

相关文章:

azure - 在Azure表存储中,CreateIfNotExists算作事务吗?

azure - 如何将现有实例从 Amazon EC2 迁移到 Windows Azure?

azure-webjobs - Azure 中的 GhostScript

visual-studio - 使用 Azure 中的 Web 应用程序使用多个部署使 Webjob 成为单例

asp.net-core - 如何将 .net core WebJob 与 asp.net core web app 一起发布?

azure-webjobs - Azure Webjob 3.0 - 无法从计时器函数中的 appsettings.json 读取配置变量

azure - 在模板中使用 powershell 脚本

azure - 在azure逻辑应用程序中如何将Cookie传递给Http请求

c# - Azure Webjobs ServiceBusTrigger - 达到 MaxDeliveryCount 时执行不同的功能

azure - 防止 Azure Webjobs 输出队列出现空队列消息