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 作业:在应用服务应用运行期间持续在后台运行。 非常适合用于队列轮询操作或后台监控任务。
支持的平台和文件类型
以下应用服务托管选项支持 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 运行后台任务 |