应用服务 WebJobs 概述

Azure WebJobs 是 Azure 应用服务的 内置功能,可让你与 Web、API 或移动应用程序一起运行后台任务、脚本和程序。 WebJobs通过在与应用程序相同的可扩展托管环境中运行,简化了常见操作(例如数据处理、图像大小调整、队列处理或文件清理)的自动化。

选择 Web 作业

WebJobs 适合以下情况下:

  • 您已经在应用服务上托管您的应用程序。
  • 你想要与应用一起部署和管理后台任务。
  • 除了基本计划或队列轮询之外,不需要单独的缩放模型或基于事件的触发器。

对于可缩放、独立托管或事件驱动的工作负载,请考虑使用 Azure Functions

关键功能

  • 在不预配单独的基础结构的情况下运行后台任务
  • 按需、按计划或持续触发作业
  • 使用多种语言和脚本平台
  • 使用 Azure 门户、Visual Studio、zip 部署或自动化管道进行部署
  • 使用 Kudu 或应用服务诊断工具进行监视和故障排除
  • 与其他 Azure 服务(例如 Azure 存储、事件中心或服务总线)集成

Web 作业类型

WebJobs 有三种主要类型:

  • 触发的 Web 作业:按需运行或响应特定事件。 可以手动或从 Azure 存储等服务触发它们。
  • 定时 WebJobs:一种特定类型的触发 WebJob,使用settings.job包含 NCRONTAB 表达式的文件根据定义的计划运行。
  • 连续运行的 Web 作业:在应用服务应用运行期间持续在后台运行。 非常适合用于队列轮询操作或后台监控任务。

Azure 应用服务中 WebJobs 的示意图概述,其中显示了作业类型。

支持的平台和文件类型

以下应用服务托管选项支持 WebJobs:

  • Windows 代码
  • Windows 容器
  • Linux 代码
  • Linux 容器

支持的文件/脚本类型包括:

  • Windows 可执行文件和脚本:.exe.cmd.bat
  • PowerShell 脚本: .ps1
  • Bash 脚本: .sh
  • 脚本语言:Python(.py)、Node.js(.js)、PHP(.php)、F# (.fsx
  • 容器应用中包含的任何语言运行时

这种多功能性使你能够使用已经熟悉的工具和语言将 WebJobs 集成到各种应用程序体系结构中。

部署选项

可以使用多种方法部署 WebJobs:

  • Azure 门户或 zip 上传:手动上传脚本或作业文件。
  • Visual Studio:将 ASP.NET 应用直接部署到 Windows 应用服务。
  • CI/CD 管道:使用 GitHub Actions、Azure DevOps 或 Azure CLI 自动部署。
  • ARM/Bicep 模板:以声明方式部署基础结构和作业。

WebJobs 还通过 Kudu 提供 内置日志记录 ,并与应用服务诊断集成,以帮助监视作业活动并解决问题。

缩放注意事项

WebJobs 会与应用服务计划一起进行缩放。 如果应用配置为横向扩展到多个实例,WebJobs 将根据需要在每个实例上运行:

  • 默认情况下,触发的 Web 作业 将在单个实例上运行。
  • 可以通过使用WEBJOBS_RUN_ONCE设置将连续 WebJobs 配置为在所有实例或单个实例上运行。

如果需要独立缩放或事件驱动的执行, Azure Functions 可能更合适。

最佳做法

  • 触发的 WebJobs 用于即席或计划性操作。
  • 仅当任务需要持续运行(例如轮询队列)时,才使用 连续 WebJobs。
  • 在脚本中实现 重试逻辑和错误处理
  • 使用 应用程序日志记录Kudu 日志 监视作业行为。
  • 尽可能使作业逻辑 与主应用逻辑分开
  • 使用 基于存储的触发器 (例如 Azure 队列)进行可靠的分离通信。

选择场景

目标 文章
快速执行计划的网络任务 快速入门:创建计划任务 WebJob
使用脚本或代码手动生成 Web 作业 在 Azure 应用服务中创建 WebJob
使用实际用例遵循教程 教程:使用 WebJobs 运行后台任务

后续步骤