教程:生成计划的 WebJob

WebJobs 是 Azure 应用服务的一项功能,可用于在与 Web 应用相同的实例中运行程序或脚本。 所有应用服务计划都支持 WebJobs,无需额外付费。 本教程将指导您通过使用首选的开发技术栈来创建一个可以计划和触发的 WebJob。

先决条件

  • 拥有有效订阅的 Azure 帐户。 创建账户
  • 现有的应用服务 .NET 9 应用
  • 必须在您的应用程序上启用 Always on
  • 对于 Windows 容器和所有 Linux 应用,请确保将应用设置 WEBSITE_SKIP_RUNNING_KUDUAGENT 设置为 false

在本地准备 WebJob

  1. 在此步骤中,您将创建一个基本的 .NET WebJob 项目并导航到项目根目录。

    dotnet new console -n webjob –framework net9.0
    
    cd webjob
    
  2. 接下来,将Program.cs替换为以下用于将当前时间写入控制台的代码:

    using System; 
    
    class Program 
    { 
        static void Main() 
        { 
            DateTimeOffset now = DateTimeOffset.Now; 
            Console.WriteLine("Current time with is: " + now.ToString("hh:mm:ss tt zzz")); 
        } 
    }
    
  3. webjob 目录中,运行 webjob 以确认当前时间已输出到控制台:

    dotnet run
    

    应该会看到与下面类似的输出:

    Current time with is: 07:53:07 PM -05:00
    
  4. 确认应用正常工作后,请生成它并导航到父目录:

    dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true
    
  5. (仅限 Linux) 在项目根目录中,使用以下代码创建一个 run.sh 用于运行生成的可执行文件:

    #!/bin/bash
    
    ./webjob
    
  6. 现在,将文件打包到 .zip,如以下命令所示:

    zip -j webjob.zip bin/Release/net9.0/win-x64/publish/webjob.exe
    

在 Azure 中创建计划的 WebJob

  1. Azure 门户中,转到应用服务应用的 “应用服务 ”页。

  2. 在左窗格中,依次选择“WebJobs”、“添加”。

    屏幕截图显示了如何在门户的应用服务应用中添加 WebJob。(计划的 WebJob)

  3. 填写表中指定的“添加 WebJob”设置,然后选择“创建 Webjob”。 对于 File Upload (文件上传),请务必选择您之前创建或下载的 .zip 文件。

    屏幕截图显示了如何在应用服务应用中配置计划的 WebJob。

    设置 价值 说明
    名称 网络作业 WebJob 名称。 必须以字母或数字开头,且不能包含除 "-" 和 "_" 以外的特殊字符。
    文件上传 webjob.zip 包含可执行文件或脚本文件的 .zip 文件。 支持的文件类型列在 支持的文件类型 部分中。
    类型 触发 指定 WebJob 的运行方式:连续运行或触发运行。
    触发器 已安排 定时(计划)或手动。 确保启用了 Always on(始终开启) 以使计划可靠地运行。
    CRON 表达式 0 0/1 * * * * 本快速入门指南采用每分钟运行一次的计划配置。 请参阅 CRON 表达式 以了解有关语法的更多信息。
  4. 新的 Web 作业随即显示在“Web 作业”页上。 如果有消息指出已添加 WebJob 但你未看到该 WebJob,请选择“刷新”。

  5. 计划的 WebJob 按 CRON 表达式定义的计划运行。

    显示如何在 Azure 门户中运行计划的 WebJob 的屏幕截图。

WebJobs 是 Azure 应用服务的一项功能,可用于在与 Web 应用相同的实例中运行程序或脚本。 所有应用服务计划都支持 WebJobs,无需额外付费。 本示例使用计划的(触发的)WebJob,每分钟输出一次系统时间。

先决条件

  • 拥有有效订阅的 Azure 帐户。 创建账户
  • 现有的 Linux Python 应用
  • 必须在您的应用程序上启用 Always on
  • 确保将应用设置 WEBSITE_SKIP_RUNNING_KUDUAGENT 设置为 false

准备样本 WebJob

  1. 下载预生成示例项目 以快速开始。 此示例包含文件 webjob.py,该文件将当前时间输出到控制台,如下所示:

    import datetime 
    
    current_datetime = datetime.datetime.now() 
    print(current_datetime) # Output: 2025-03-27 10:27:21.240752
    
  2. 提取下载的 zip 文件,然后创建一个仅包含 webjob.py 文件(没有任何父目录)的新 zip 文件。 WebJobs 要求可执行文件或脚本位于 zip 文件的根目录中。

创建计划的 Web 作业

  1. Azure 门户中,转到应用服务应用的 “应用服务 ”页。

  2. 在左窗格中,依次选择“WebJobs”、“添加”。

    屏幕截图显示了如何在门户的应用服务应用中添加 WebJob。(计划的 WebJob)

  3. 填写表中指定的“添加 WebJob”设置,然后选择“创建 Webjob”。 对于 文件上传,请务必选择之前在 “准备示例 WebJob ”部分中创建的 .zip 文件。

    屏幕截图显示了如何在应用服务应用中配置计划的 WebJob。

    设置 价值 Description
    名称 网络作业 WebJob 名称。 必须以字母或数字开头,且不能包含除 "-" 和 "_" 以外的特殊字符。
    文件上传 webjob.zip 在根目录包含.zip 文件。 支持的文件类型列在 支持的文件类型 部分中。
    类型 触发 指定 WebJob 的运行方式:连续运行或触发运行。
    触发器 已安排 定时(计划)或手动。 确保启用了 Always on(始终开启) 以使计划可靠地运行。
    CRON 表达式 0 0/1 * * * * 本快速入门指南采用每分钟运行一次的计划配置。 请参阅 CRON 表达式 以了解有关语法的更多信息。
  4. 新的 Web 作业随即显示在“Web 作业”页上。 如果有消息指出已添加 WebJob 但你未看到该 WebJob,请选择“刷新”。

  5. 计划的 WebJob 按 CRON 表达式定义的计划运行。

    显示如何在 Azure 门户中运行计划的 WebJob 的屏幕截图。

WebJobs 是 Azure 应用服务的一项功能,可用于在与 Web 应用相同的实例中运行程序或脚本。 所有应用服务计划都支持 WebJobs,无需额外付费。 本示例使用计划的(触发的)WebJob,每分钟输出一次系统时间。

先决条件

  • 拥有有效订阅的 Azure 帐户。 创建账户
  • 现有的应用服务 Node 应用
  • 必须在您的应用程序上启用 Always on
  • 对于 Linux,请确保将应用设置 WEBSITE_SKIP_RUNNING_KUDUAGENT 设置为 false

准备样本 WebJob

  1. 下载预生成示例项目 以快速开始。 该示例包括一个 JavaScript 文件 webjob.js,该文件将当前时间输出到控制台,如下所示:

    // Import the 'Date' object from JavaScript
    const currentTime = new Date();
    
    // Format the time as a string
    const formattedTime = currentTime.toLocaleTimeString();
    
    // Output the formatted time to the console
    console.log(`Current system time is: ${formattedTime}`);
    
  2. 提取下载的 zip 文件,然后创建一个仅包含 webjob.js 文件(没有任何父目录)的新 zip 文件。 WebJobs 要求可执行文件或脚本位于 zip 文件的根目录中。

创建计划的 Web 作业

  1. Azure 门户中,转到应用服务应用的 “应用服务 ”页。

  2. 在左窗格中,依次选择“WebJobs”、“添加”。

    屏幕截图显示了如何在门户的应用服务应用中添加 WebJob。(计划的 WebJob)

  3. 填写表中指定的“添加 WebJob”设置,然后选择“创建 Webjob”。 对于 文件上传,请务必选择之前在 “准备示例 WebJob ”部分中创建的 .zip 文件。

    屏幕截图显示了如何在应用服务应用中配置计划的 WebJob。

    设置 价值 Description
    名称 网络作业 WebJob 名称。 必须以字母或数字开头,且不能包含除 "-" 和 "_" 以外的特殊字符。
    文件上传 webjob.zip 在根目录包含.zip 文件。 支持的文件类型列在 支持的文件类型 部分中。
    类型 触发 指定 WebJob 的运行方式:连续运行或触发运行。
    触发器 已安排 定时(计划)或手动。 确保启用了 Always on(始终开启) 以使计划可靠地运行。
    CRON 表达式 0 0/1 * * * * 本快速入门指南采用每分钟运行一次的计划配置。 请参阅 CRON 表达式 以了解有关语法的更多信息。
  4. 新的 Web 作业随即显示在“Web 作业”页上。 如果有消息指出已添加 WebJob 但你未看到该 WebJob,请选择“刷新”。

  5. 计划的 WebJob 按 CRON 表达式定义的计划运行。

    显示如何在 Azure 门户中运行计划的 WebJob 的屏幕截图。

WebJobs 是 Azure 应用服务的一项功能,可用于在与 Web 应用相同的实例中运行程序或脚本。 所有应用服务计划都支持 WebJobs,无需额外付费。 本示例使用计划的(触发的)WebJob,每分钟输出一次系统时间。

重要

基于 Alpine Linux 的自定义 Linux 容器不支持 WebJobs,包括使用 Java 8 和 Java 11 运行时堆栈的 Linux 应用。 从 Java 17 Linux 应用开始,Azure 应用服务使用与 WebJobs 兼容的非 Alpine 映像。

先决条件

准备 WebJob

  1. 下载示例 Java WebJob。 你将使用 .JAR 生成文件。 位于 的 project/src/main/java/webjob/HelloWorld.java Java 项目向控制台输出一条消息和当前时间。

    import java.time.LocalDateTime; 
    
    public class HelloWorld { 
    
        public static void main(String[] args) { 
    
            System.out.println("------------------------------------------------------------"); 
            System.out.println("Hello World from WebJob: " + LocalDateTime.now()); 
            System.out.println("------------------------------------------------------------"); 
        } 
    } 
    
  2. 通过从.jar目录中运行以下命令生成并打包 Java 项目以生成可执行文件project/

    mvn install 
    mvn package 
    

    成功构建后,jar 文件将位于 project/target/webjob-artifact-1.0.0.jar

  3. 打包 project/target/webjob-artifact-1.0.0.jar.zip 文件。

    zip webjob.zip project/target/webjob-artifact-1.0.0.jar
    

在 Azure 中创建计划的 WebJob

  1. Azure 门户中,转到应用服务应用的 “应用服务 ”页。

  2. 在左窗格中,依次选择“WebJobs”、“添加”。

    屏幕截图显示了如何在门户的应用服务应用中添加 WebJob。(计划的 WebJob)

  3. 填写表中指定的“添加 WebJob”设置,然后选择“创建 Webjob”。 对于 文件上传,请务必选择在上一部分中创建的 .zip 文件。

    屏幕截图显示了如何在应用服务应用中配置计划的 WebJob。

    设置 价值 说明
    名称 网络作业 WebJob 名称。 必须以字母或数字开头,且不能包含除 "-" 和 "_" 以外的特殊字符。
    文件上传 webjob.zip 包含webjob-artifact-1.0.0.jar文件。 支持的文件类型列在 支持的文件类型 部分中。
    类型 触发 指定 WebJob 的运行方式:连续运行或触发运行。
    触发器 已安排 定时(计划)或手动。 确保启用了 Always on(始终开启) 以使计划可靠地运行。
    CRON 表达式 0 0/1 * * * * 本快速入门指南采用每分钟运行一次的计划配置。 请参阅 CRON 表达式 以了解有关语法的更多信息。
  4. 新的 Web 作业随即显示在“Web 作业”页上。 如果有消息指出已添加 WebJob 但你未看到该 WebJob,请选择“刷新”。

  5. 计划的 WebJob 按 CRON 表达式定义的计划运行。

    显示如何在 Azure 门户中运行计划的 WebJob 的屏幕截图。

WebJobs 是 Azure 应用服务的一项功能,可用于在与 Web 应用相同的实例中运行程序或脚本。 所有应用服务计划都支持 WebJobs,无需额外付费。 本示例使用计划的(触发的)WebJob,每分钟输出一次系统时间。

先决条件

  • 拥有有效订阅的 Azure 帐户。 创建账户
  • Linux 上的现有应用服务 PHP 应用。 在本快速入门中,使用了 PHP 应用程序
  • 必须在您的应用程序上启用 Always on
  • 确保将应用设置 WEBSITE_SKIP_RUNNING_KUDUAGENT 设置为 false

准备样本 WebJob

  1. 下载预生成示例项目 以快速开始。 此示例包含 PHP 文件 webjob.php,该文件将当前时间输出到控制台,如下所示:

    <?php
    // Get the current time
    $current_time = date("Y-m-d H:i:s");
    
    // Display the current time
    echo "The current time is: " . $current_time;
    ?>
    
  2. 提取下载的 zip 文件,然后创建一个仅包含 webjob.php 文件(没有任何父目录)的新 zip 文件。 WebJobs 要求可执行文件或脚本位于 zip 文件的根目录中。

创建计划的 Web 作业

  1. Azure 门户中,转到应用服务应用的 “应用服务 ”页。

  2. 在左窗格中,依次选择“WebJobs”、“添加”。

    屏幕截图显示了如何在门户的应用服务应用中添加 WebJob。(计划的 WebJob)

  3. 填写表中指定的“添加 WebJob”设置,然后选择“创建 Webjob”。 对于 文件上传,请务必选择之前在 “准备示例 WebJob ”部分中创建的 .zip 文件。

    屏幕截图显示了如何在应用服务应用中配置计划的 WebJob。

    设置 价值 Description
    名称 网络作业 WebJob 名称。 必须以字母或数字开头,且不能包含除 "-" 和 "_" 以外的特殊字符。
    文件上传 webjob.zip 在根目录包含.zip 文件。 支持的文件类型列在 支持的文件类型 部分中。
    类型 触发 指定 WebJob 的运行方式:连续运行或触发运行。
    触发器 已安排 定时(计划)或手动。 确保启用了 Always on(始终开启) 以使计划可靠地运行。
    CRON 表达式 0 0/1 * * * * 本快速入门指南采用每分钟运行一次的计划配置。 请参阅 CRON 表达式 以了解有关语法的更多信息。
  4. 新的 Web 作业随即显示在“Web 作业”页上。 如果有消息指出已添加 WebJob 但你未看到该 WebJob,请选择“刷新”。

  5. 计划的 WebJob 按 CRON 表达式定义的计划运行。

    显示如何在 Azure 门户中运行计划的 WebJob 的屏幕截图。

注释

运行 CRON 表达式使用的默认时区为协调世界时 (UTC)。 若要让 CRON 表达式基于其他时区运行,请为函数应用创建一个名为 WEBSITE_TIME_ZONE 的应用设置。 若要了解详细信息,请参阅 NCRONTAB 时区

查看 WebJob 日志

选择你之前创建的 WebJob 的日志。

屏幕截图显示了如何在门户的应用服务应用中查看 WebJob 日志(计划的 WebJob)。

输出应如下所示。

显示 WebJobs 日志输出的屏幕截图。

清除

若要删除 Web 作业,请在门户中选择 Web 作业,然后选择 Delete

屏幕截图显示了如何在门户中删除 WebJob。

后续步骤

探索更高级的 WebJob 方案,包括触发器和部署选项