在 Azure 应用服务中使用 WebJobs 运行后台任务
通过使用 Azure 门户上传可执行文件或脚本来部署 WebJobs。 可以在 Azure 应用服务中运行后台任务。
如果你不使用 Azure 应用服务,而是使用 Visual Studio 2019 来开发和部署 WebJobs,请参阅使用 Visual Studio 部署 WebJobs。
概述
WebJobs 是 Azure 应用服务的一项功能,它允许你在与 Web 应用、API 应用或移动应用相同的实例中运行程序或脚本。 使用 Web 作业无需支付额外的费用。
可以结合使用 Azure WebJobs SDK 和 WebJobs 来简化许多编程任务。 Linux 上的应用服务尚不支持 WebJobs。 有关详细信息,请参阅什么是 WebJobs SDK。
Web 作业类型
下表描述了连续和触发 Web 作业之间的差别。
连续 | 触发 |
---|---|
创建 Web 作业后立即启动。 若要防止作业终止,程序或脚本通常在无限循环中执行其工作。 如果作业确实终止,可将其重启。 通常与 WebJobs SDK 结合使用。 | 仅当手动触发或按计划触发时启动。 |
在运行 Web 应用的所有实例上运行。 可以选择性地将 Web 作业限制为单个实例。 | 在 Azure 选择用于负载均衡的单个实例上运行。 |
支持远程调试。 | 不支持远程调试。 |
代码部署在 \site\wwwroot\app_data\Jobs\Continuous 下。 |
代码部署在 \site\wwwroot\app_data\Jobs\Triggered 下。 |
注意
Web 应用可在进入非活动状态 20 分钟后超时。 只有向实际 Web 应用发出的请求才会重置计时器。 在 Azure 门户中查看应用的配置或向高级工具站点 (https://<app_name>.scm.chinacloudsites.cn
) 发出请求不会重置计时器。 如果应用运行连续性或计划的(计时器触发器)WebJobs,可启用 Always On 来确保 WebJobs 可靠运行。 此功能仅在基本、标准和高级定价层中提供。
支持的脚本或程序文件类型
支持以下文件类型:
- .cmd、.bat、.exe(使用 Windows cmd)
- .ps1(使用 PowerShell)
- .sh(使用 Bash)
- .php(使用 PHP)
- .py(使用 Python)
- .js(使用 Node.js)
- .jar(使用 Java)
创建连续 Web 作业
重要
如果为应用程序配置了源代码管理,则 Webjobs 应会部署为源代码管理集成的一部分。 为应用程序配置源代码管理后,无法从 Azure 门户添加 WebJob。
在 Azure 门户中,转到应用服务 Web 应用、API 应用或移动应用的“应用服务”页。
在应用的“应用服务”页的左侧窗格中,搜索并选择“WebJobs” 。
在“WebJobs”页上选择“添加” 。
按照表中的指定值填写“添加 WebJob”设置。
设置 示例值 说明 名称 myContinuousWebJob 在应用服务应用中唯一的名称。 必须以字母或数字开头,且不能包含除“-”和“_”以外的特殊字符。 文件上传 ConsoleApp.zip 一个 .zip 文件,其中包含可执行文件或脚本文件,以及运行程序或脚本所需的所有支持文件。 支持的文件类型部分中列出了支持的可执行文件或脚本文件类型。 类型 连续 本文前面介绍了 Web 作业类型。 缩放 多实例 仅适用于连续 Web 作业。 确定程序或脚本是在所有实例还是只在一个实例上运行。 指定要在多个实例上运行的选项不适用于免费或共享定价层。 选择“确定”。
新的 Web 作业随即显示在“Web 作业”页上。 如果有消息指出已添加 WebJob 但你未看到该 WebJob,请选择“刷新”。
若要停止或重启某个连续 WebJob,请在列表中右键单击该 WebJob,然后选择“停止”或“启动” 。
创建手动触发的 Web 作业
在 Azure 门户中,搜索并选择“应用服务”。
从列表中选择你的 Web 应用、API 应用或移动应用。
在应用的“应用服务”页的左侧窗格中,选择“WebJobs” 。
在“WebJobs”页上选择“添加” 。
按照表中的指定值填写“添加 WebJob”设置。
设置 示例值 说明 名称 myTriggeredWebJob 在应用服务应用中唯一的名称。 必须以字母或数字开头,且不能包含除“-”和“_”以外的特殊字符。 文件上传 ConsoleApp.zip 一个 .zip 文件,其中包含可执行文件或脚本文件,以及运行程序或脚本所需的所有支持文件。 支持的文件类型部分中列出了支持的可执行文件或脚本文件类型。 类型 触发 本文前面介绍了 WebJob 类型。 触发器 手动 选择“确定”。
新的 Web 作业随即显示在“Web 作业”页上。 如果有消息指出已添加 WebJob 但你未看到该 WebJob,请选择“刷新”。
若要运行 WebJob,请在列表中右键单击其名称,然后选择“运行”。
创建计划的 Web 作业
还会触发计划的 WebJob。 可将触发器安排为按照你指定的计划自动运行。
在 Azure 门户中,搜索并选择“应用服务”。
从列表中选择你的 Web 应用、API 应用或移动应用。
在应用的“应用服务”页的左侧窗格中,选择“WebJobs” 。
在“WebJobs”页上选择“添加” 。
按照表中的指定值填写“添加 WebJob”设置。
设置 示例值 说明 名称 myScheduledWebJob 在应用服务应用中唯一的名称。 必须以字母或数字开头,且不能包含除“-”和“_”以外的特殊字符。 文件上传 ConsoleApp.zip 一个 .zip 文件,其中包含可执行文件或脚本文件,以及运行程序或脚本所需的所有支持文件。 支持的文件类型部分中列出了支持的可执行文件或脚本文件类型。 类型 触发 本文前面介绍了 Web 作业类型。 触发器 计划 要使计划可靠运行,请启用 Always On 功能。 Always On 仅在基本、标准和高级定价层中提供。 CRON 表达式 0 0/20 * * * * 以下部分介绍了 CRON 表达式。 选择“确定”。
新的 Web 作业随即显示在“Web 作业”页上。 如果有消息指出已添加 WebJob 但你未看到该 WebJob,请选择“刷新”。
NCRONTAB 表达式
可以在门户中输入 NCRONTAB 表达式,或者在 Web 作业 .zip 文件的根目录中包含一个 settings.job
文件,如以下示例中所示:
{
"schedule": "0 */15 * * * *"
}
若要了解详细信息,请参阅计划触发的 Web 作业。
注意
运行 CRON 表达式使用的默认时区为协调世界时 (UTC)。 若要让 CRON 表达式基于其他时区运行,请为函数应用创建一个名为 WEBSITE_TIME_ZONE 的应用设置。 若要了解详细信息,请参阅 NCRONTAB 时区。
管理 WebJob
可以在 Azure 门户中管理你站点中运行的各个 WebJob 的运行状态。 只需转到“设置”>“WebJobs”,选择 WebJob,然后可以启动和停止该 WebJob 。 还可以查看和修改运行 WebJob 的 Webhook 的密码。
还可以添加名为 WEBJOBS_STOPPED
、值为 1
的应用程序设置,以停止站点上运行的所有 WebJob。 使用此方法可以十分方便地防止有冲突的 WebJob 在过渡槽和生产槽中运行。 同样,可为 WEBJOBS_DISABLE_SCHEDULE
设置使用 1
值,以便在站点或过渡槽中禁用已触发的 WebJob。 对于槽,请记得启用“部署槽设置”选项,使该设置本身不会交换。
查看作业历史记录
选择 WebJob,然后选择“日志”即可查看历史记录。
在“Web 作业详细信息”页中,选择一个时间以查看一个运行轮次的详细信息。
在“Web 作业运行详细信息”页中,选择“切换输出”查看日志内容的文本。
若要在单独的浏览器窗口中查看输出文本,请选择“下载”。 若要下载文本本身,请右键单击“下载”,并使用浏览器选项来保存文件内容。
选择页面顶部的“Web 作业”痕迹导航链接转到 Web 作业列表。
后续步骤
可以结合 WebJobs 使用 Azure WebJobs SDK 来简化许多编程任务。 有关详细信息,请参阅什么是 WebJobs SDK。