教程:生成计划的 WebJob

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

先决条件

  • 拥有有效订阅的 Azure 帐户。 免费创建帐户
  • 现有的应用服务 .NET 9 应用
  • 必须在您的应用程序上启用 Always on
  • 确保 App 设置 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 build --self-contained
    
    cd ..
    
  5. 接下来我们使用以下代码创建 run.sh

    #!/bin/bash
    
    dotnet webjob/bin/Debug/net9.0/webjob.dll 
    
  6. 现在按如下所示将所有文件打包成一个名为 .zip 的文件包:

    zip webjob.zip run.sh webjob/bin/Debug/net9.0/*
    

在 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 帐户。 免费创建帐户
  • 现有的应用服务 Python 应用
  • 必须在您的应用程序上启用 Always on
  • 确保 App 设置 WEBSITE_SKIP_RUNNING_KUDUAGENTfalse

下载示例 WebJob

您可以 下载预构建的示例项目 以快速入门。 该示例包括两个文件: webjob.pyrun.sh.

Python 脚本 webjob.py将当前时间输出到控制台,如下所示:

import datetime 

current_datetime = datetime.datetime.now() 
print(current_datetime) # Output: 2025-03-27 10:27:21.240752 

文件 run.sh, 调用 WebJob.py 如下所示:

#!/bin/bash
/opt/python/3/bin/python3.13 webjob.py

创建计划的 Web 作业

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

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

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

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

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

    设置 价值 说明
    名称 网络作业 WebJob 名称。 必须以字母或数字开头,且不能包含除 "-" 和 "_" 以外的特殊字符。
    文件上传 App-Service-Python-WebJobs-Quickstart-Main.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
  • 确保应用程序设置 WEBSITE_SKIP_RUNNING_KUDUAGENT 设置为 false

下载示例 WebJob

您可以 下载预构建的示例项目 以快速入门。 该示例包括两个文件: webjob.jsrun.sh.

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}`);

文件 run.sh, 调用 webjob.js,如下所示:

#!/bin/bash

node webjob.js

创建计划的 Web 作业

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

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

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

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

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

    设置 价值 说明
    名称 网络作业 WebJob 名称。 必须以字母或数字开头,且不能包含除 "-" 和 "_" 以外的特殊字符。
    文件上传 App-Service-Node-WebJobs-Quickstart-Main.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,每分钟输出一次系统时间。

先决条件

准备 WebJob

已为您创建了一个示例 Java WebJob。 在本节中,您将查看示例,然后使用 Maven 构建.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("------------------------------------------------------------"); 
    } 
} 

生成 Java WebJob

  1. run.sh 脚本运行 jar,该 jar 的名称是在 Maven 配置中设置的。 此脚本将在触发 WebJob 时运行。

    java -jar webjob-artifact-1.0.0.jar
    
  2. 接下来,我们编译 Java 项目以生成可执行文件 .jar. 有多种方法可以做到这一点,但在本例中,我们将使用 Maven。 从 project/ 目录运行以下命令:

    mvn install 
    mvn package 
    

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

  3. 将 jar 文件移动到 git 存储库的根目录,然后使用 mv project/target/webjob-artifact-1.0.0.jar . 将我们的应用程序打包为 .zip 文件。

    zip webjob.zip run.sh webjob-artifact-1.0.0.jar 
    

在 Azure 中创建计划的 WebJob

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

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

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

  3. 填写表中指定的“添加 WebJob”设置,然后选择“创建 Webjob”。 对于“文件上传”,请务必选择你之前在下载示例 WebJob 部分中下载的 .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 上的现有应用服务 PHP 应用。 在本快速入门中,使用了 PHP 应用程序
  • 必须在您的应用程序上启用 Always on
  • 确保 App 设置 WEBSITE_SKIP_RUNNING_KUDUAGENT 被设置为 false

下载示例 WebJob

您可以 下载预构建的示例项目 以快速入门。 该示例包括两个文件: webjob.phprun.sh.

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;
?>

文件 run.sh, 调用 webjob.php 如下所示:

#!/bin/bash

php -f webjob.php

创建计划的 Web 作业

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

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

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

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

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

    设置 价值 说明
    名称 网络作业 WebJob 名称。 必须以字母或数字开头,且不能包含除 "-" 和 "_" 以外的特殊字符。
    文件上传 App-Service-PHP-WebJobs-Quickstart-Main.zip 包含可执行文件或脚本文件的 .zip 文件。 支持的文件类型列在 支持的文件类型 部分中。
    类型 触发 指定 WebJob 的运行方式:连续或触发。
    触发器 已安排 计划或手动。 确保启用了 始终开启 功能,以便计划可靠地运行。
    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 方案,包括触发器和部署选项