Edit

Share via


Tutorial: Build a scheduled WebJob

WebJobs is a feature of Azure App Service that enables you to run a program or script in the same instance as a web app. All App Service plans support WebJobs at no additional cost. This tutorial walks you through creating a scheduled (triggered) WebJob using your preferred development stack.

Prerequisites

Prepare the WebJob locally

  1. In this step, you create a basic .NET WebJob project and navigate to the project root.

    dotnet new console -n webjob –framework net9.0
    
    cd webjob
    
  2. Next, replace Program.cs to the following code that writes the current time to the console:

    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. From the webjob directory, run the webjob to confirm the current time is output to the console:

    dotnet run
    

    You should see output similar to the following:

    Current time with is: 07:53:07 PM -05:00
    
  4. Once you've confirmed the app works, build it and navigate to the parent directory:

    dotnet build --self-contained
    
    cd ..
    
  5. Next we to create run.sh with the following code:

    #!/bin/bash
    
    dotnet webjob/bin/Debug/net9.0/webjob.dll 
    
  6. Now package all the files into a .zip as shown below:

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

Create a scheduled WebJob in Azure

  1. In the Azure portal, go to the App Service page of your App Service app.

  2. From the left pane, select WebJobs, then select Add.

    Screenshot that shows how to add a WebJob in an App Service app in the portal (scheduled WebJob).

  3. Fill in the Add WebJob settings as specified in the table, then select Create Webjob. For File Upload, be sure to select the .zip file you created or downloaded earlier.

    Screenshot that shows how to configure a scheduled WebJob in an App Service app.

    Setting value Description  
    Name webjob The WebJob name. Must start with a letter or a number and must not contain special characters other than "-" and "_".
    File Upload webjob.zip The .zip file that contains your executable or script file. The supported file types are listed in the supported file types section.
    Type Triggered Specifies when the WebJob runs: Continuous or Triggered.
    Triggers Scheduled Scheduled or Manual. Ensure Always on is enabled for the schedule to work reliably.
    CRON Expression 0 0/1 * * * * For this quickstart, we use a schedule that runs every minute. See CRON expressions to learn more about the syntax.
  4. The new WebJob appears on the WebJobs page. If you see a message that says the WebJob was added, but you don't see it, select Refresh.

  5. The scheduled WebJob is run at the schedule defined by the CRON expression.

    Screenshot that shows how to run a manually scheduled WebJob in the Azure portal.

WebJobs is a feature of Azure App Service that enables you to run a program or script in the same instance as a web app. All app service plans support WebJobs at no additional cost. This sample uses a scheduled (Triggered) WebJob to output the system time once every minute.

Prerequisites

Download the sample WebJob

You can download a pre-built sample project to get started quickly. The sample includes two files: webjob.py and run.sh.

The Python script, webjob.py, outputs the current time to the console as shown below:

import datetime 

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

The file, run.sh, calls WebJob.py as shown below:

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

Create a scheduled WebJob

  1. In the Azure portal, go to the App Service page of your App Service app.

  2. From the left pane, select WebJobs, then select Add.

    Screenshot that shows how to add a WebJob in an App Service app in the portal (scheduled WebJob).

  3. Fill in the Add WebJob settings as specified in the table, then select Create Webjob. For File Upload, be sure to select the .zip file you downloaded earlier in the Download the sample WebJob section.

    Screenshot that shows how to configure a scheduled WebJob in an App Service app.

    Setting value Description  
    Name webjob The WebJob name. Must start with a letter or a number and must not contain special characters other than "-" and "_".
    File Upload App-Service-Python-WebJobs-Quickstart-Main.zip The .zip file that contains your executable or script file. The supported file types are listed in the supported file types section.
    Type Triggered Specifies when the WebJob runs: Continuous or Triggered.
    Triggers Scheduled Scheduled or Manual. Ensure Always on is enabled for the schedule to work reliably.
    CRON Expression 0 0/1 * * * * For this quickstart, we use a schedule that runs every minute. See CRON expressions to learn more about the syntax.
  4. The new WebJob appears on the WebJobs page. If you see a message that says the WebJob was added, but you don't see it, select Refresh.

  5. The scheduled WebJob is run at the schedule defined by the CRON expression.

    Screenshot that shows how to run a manually scheduled WebJob in the Azure portal.

WebJobs is a feature of Azure App Service that enables you to run a program or script in the same instance as a web app. All app service plans support WebJobs at no additional cost. This sample uses a scheduled (Triggered) WebJob to output the system time once every minute.

Prerequisites

  • An Azure account with an active subscription. Create an account for free.
  • An existing App Service Node app.
  • Always on must be enabled on your app.
  • Ensure the App setting WEBSITE_SKIP_RUNNING_KUDUAGENT is set to false.

Download the sample WebJob

You can download a pre-built sample project to get started quickly. The sample includes two files: webjob.js and run.sh.

The JavaScript, webjob.js, outputs the current time to the console as shown below:

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

The file, run.sh, calls webjob.js as shown below:

#!/bin/bash

node webjob.js

Create a scheduled WebJob

  1. In the Azure portal, go to the App Service page of your App Service app.

  2. From the left pane, select WebJobs, then select Add.

    Screenshot that shows how to add a WebJob in an App Service app in the portal (scheduled WebJob).

  3. Fill in the Add WebJob settings as specified in the table, then select Create Webjob. For File Upload, be sure to select the .zip file you downloaded earlier in the Download the sample WebJob section.

    Screenshot that shows how to configure a scheduled WebJob in an App Service app.

    Setting value Description  
    Name webjob The WebJob name. Must start with a letter or a number and must not contain special characters other than "-" and "_".
    File Upload App-Service-Node-WebJobs-Quickstart-Main.zip The .zip file that contains your executable or script file. The supported file types are listed in the supported file types section.
    Type Triggered Specifies when the WebJob runs: Continuous or Triggered.
    Triggers Scheduled Scheduled or Manual. Ensure Always on is enabled for the schedule to work reliably.
    CRON Expression 0 0/1 * * * * For this quickstart, we use a schedule that runs every minute. See CRON expressions to learn more about the syntax.
  4. The new WebJob appears on the WebJobs page. If you see a message that says the WebJob was added, but you don't see it, select Refresh.

  5. The scheduled WebJob is run at the schedule defined by the CRON expression.

    Screenshot that shows how to run a manually scheduled WebJob in the Azure portal.

WebJobs is a feature of Azure App Service that enables you to run a program or script in the same instance as a web app. All app service plans support WebJobs at no additional cost. This sample uses a scheduled (Triggered) WebJob to output the system time once every minute.

Prerequisites

Prepare the WebJob

A sample Java WebJob has been created for you. In this section, you review the sample and then build a .JAR file using Maven.

Review the sample

The Java project located at project/src/main/java/webjob/HelloWorld.java outputs a message & the current time to the console.

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("------------------------------------------------------------"); 
    } 
} 

Build the Java WebJob

  1. The run.sh script runs a jar with the name that set in the Maven configuration. This script will run when our WebJob is triggered.

    java -jar webjob-artifact-1.0.0.jar
    
  2. Next, we compile the Java project to produce the executable .jar. There are multiple ways to do this, but for this example, we’ll use Maven. Run the following commands from the project/ directory:

    mvn install 
    mvn package 
    

    The jar files will be located at project/target/webjob-artifact-1.0.0.jar after a successful build.

  3. Move the jar file to the root of the git repo with mv project/target/webjob-artifact-1.0.0.jar . Next you package our application as a .zip file.

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

Create a scheduled WebJob on Azure

  1. In the Azure portal, go to the App Service page of your App Service app.

  2. From the left pane, select WebJobs, then select Add.

    Screenshot that shows how to add a WebJob in an App Service app in the portal (scheduled WebJob).

  3. Fill in the Add WebJob settings as specified in the table, then select Create Webjob. For File Upload, be sure to select the .zip file you downloaded earlier in the Download the sample WebJob section.

    Screenshot that shows how to configure a scheduled WebJob in an App Service app.

    Setting value Description  
    Name webjob The WebJob name. Must start with a letter or a number and must not contain special characters other than "-" and "_".
    File Upload webjob.zip The .zip file that contains your executable or script file. The supported file types are listed in the supported file types section.
    Type Triggered Specifies when the WebJob runs: Continuous or Triggered.
    Triggers Scheduled Scheduled or Manual. Ensure Always on is enabled for the schedule to work reliably.
    CRON Expression 0 0/1 * * * * For this quickstart, we use a schedule that runs every minute. See CRON expressions to learn more about the syntax.
  4. The new WebJob appears on the WebJobs page. If you see a message that says the WebJob was added, but you don't see it, select Refresh.

  5. The scheduled WebJob is run at the schedule defined by the CRON expression.

    Screenshot that shows how to run a manually scheduled WebJob in the Azure portal.

WebJobs is a feature of Azure App Service that enables you to run a program or script in the same instance as a web app. All app service plans support WebJobs at no additional cost. This sample uses a scheduled (Triggered) WebJob to output the system time once every minute.

Prerequisites

  • An Azure account with an active subscription. Create an account for free.
  • An existing App Service PHP app on Linux. In this quickstart, a PHP app is used.
  • Always on must be enabled on your app.
  • Ensure the App setting WEBSITE_SKIP_RUNNING_KUDUAGENT is set to false.

Download the sample WebJob

You can download a pre-built sample project to get started quickly. The sample includes two files: webjob.php and run.sh.

The PHP script, webjob.php, outputs the current time to the console as shown below:

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

The file, run.sh, calls webjob.php as shown below:

#!/bin/bash

php -f webjob.php

Create a scheduled WebJob

  1. In the Azure portal, go to the App Service page of your App Service app.

  2. From the left pane, select WebJobs, then select Add.

    Screenshot that shows how to add a WebJob in an App Service app in the portal (scheduled WebJob).

  3. Fill in the Add WebJob settings as specified in the table, then select Create Webjob. For File Upload, be sure to select the .zip file you downloaded earlier in the Download the sample WebJob section.

    Screenshot that shows how to configure a scheduled WebJob in an App Service app.

    Setting value Description  
    Name webjob The WebJob name. Must start with a letter or a number and must not contain special characters other than "-" and "_".
    File Upload App-Service-PHP-WebJobs-Quickstart-Main.zip The .zip file that contains your executable or script file. The supported file types are listed in the supported file types section.
    Type Triggered Specifies when the WebJob runs: Continuous or Triggered.
    Triggers Scheduled Scheduled or Manual. Ensure Always on is enabled for the schedule to work reliably.
    CRON Expression 0 0/1 * * * * For this quickstart, we use a schedule that runs every minute. See CRON expressions to learn more about the syntax.
  4. The new WebJob appears on the WebJobs page. If you see a message that says the WebJob was added, but you don't see it, select Refresh.

  5. The scheduled WebJob is run at the schedule defined by the CRON expression.

    Screenshot that shows how to run a manually scheduled WebJob in the Azure portal.

Note

The default time zone used to run CRON expressions is Coordinated Universal Time (UTC). To have your CRON expression run based on another time zone, create an app setting for your function app named WEBSITE_TIME_ZONE. To learn more, see NCRONTAB time zones.

Review the WebJob logs

Select the log for the WebJob you created earlier.

Screenshot that shows how to view WebJob logs in an App Service app in the portal (scheduled WebJob).

The output should look similar to the following.

Screenshot that shows WebJobs log output.

Clean up

To remove the WebJob, select the WebJob in the portal and select Delete.

Screenshot showing how you can delete a WebJob in the portal.

Next step

Explore more advanced WebJob scenarios, including triggers and deployment options