我们正在测试一个新的 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 CLI 命令,您已经按照我之前的
answer完成了该命令。
还有一个选项是删除创建 Web 作业时上传的整个文件。每当创建 Web 作业时,都会在 KUDU 控制台
Jobs
文件夹中创建一个名为
site/wwwroot/App_Data
的新文件夹。
exe/pdb/dll
文件的作业。
如
MSDoc 中所述,在应用服务应用程序设置中将键 WEBJOBS_STOPPED
设置为值
1
以停止 Web 作业。
感谢@
IKriKan的步骤。
如果您对网络作业仍有任何问题,您可以在以下位置查看作业详细信息Diagnose and solve problems
=>
Availability and Performance
=>
WebJob Details