Run Background tasks with WebJobs in Azure App Service

Overview

WebJobs is a feature of Azure App Service that enables you to run a program or script in the same context as a web app, API app, or mobile app. There is no additional cost to use WebJobs.

This article shows how to deploy WebJobs by using the Azure portal to upload an executable or script. For information about how to develop and deploy WebJobs by using Visual Studio, see Deploy WebJobs using Visual Studio.

The Azure WebJobs SDK can be used with WebJobs to simplify many programming tasks. For more information, see What is the WebJobs SDK.

Azure Functions provides another way to run programs and scripts. For a comparison between WebJobs and Functions, see Choose between Flow, Logic Apps, Functions, and WebJobs.

WebJob types

The following table describes the differences between continuous and triggered WebJobs.

Continuous Triggered
Starts immediately when the WebJob is created. To keep the job from ending, the program or script typically does its work inside an endless loop. If the job does end, you can restart it. Starts only when triggered manually or on a schedule.
Runs on all instances that the web app runs on. You can optionally restrict the WebJob to a single instance. Runs on a single instance that Azure selects for load balancing.
Supports remote debugging. Doesn't support remote debugging.

Note

A web app can time out after 20 minutes of inactivity. Only requests to the scm (deployment) site or to the web app's pages in the portal reset the timer. Requests to the actual site don't reset the timer. If your app runs continuous or scheduled WebJobs, enable Always On to ensure that the WebJobs run reliably. This feature is available only in the Basic, Standard, and Premium pricing tiers.

Supported file types for scripts or programs

The following file types are supported:

  • .cmd, .bat, .exe (using Windows cmd)
  • .ps1 (using PowerShell)
  • .sh (using Bash)
  • .php (using PHP)
  • .py (using Python)
  • .js (using Node.js)
  • .jar (using Java)

Create a continuous WebJob

  1. In the Azure portal, go to the App Service page of your App Service web app, API app, or mobile app.

  2. Select WebJobs.

    Select WebJobs

  3. In the WebJobs page, select Add.

    WebJob page

  4. Use the Add WebJob settings as specified in the table.

    Add WebJob page

    Setting Sample value Description
    Name myContinuousWebJob A name that is unique within an App Service app. Must start with a letter or a number and cannot contain special characters other than "-" and "_".
    File Upload ConsoleApp.zip A .zip file that contains your executable or script file as well as any supporting files needed to run the program or script. The supported executable or script file types are listed in the Supported file types section.
    Type Continuous The WebJob types are described earlier in this article.
    Scale Multi instance Available only for Continuous WebJobs. Determines whether the program or script runs on all instances or just one instance. The option to run on multiple instances doesn't apply to the Free or Shared pricing tiers.
  5. Click OK.

    The new WebJob appears on the WebJobs page.

    List of WebJobs

  6. To stop or restart a continuous WebJob, right-click the WebJob in the list and click Stop or Start.

    Stop a continuous WebJob

Create a manually triggered WebJob

  1. In the Azure portal, go to the App Service page of your App Service web app, API app, or mobile app.

  2. Select WebJobs.

    Select WebJobs

  3. In the WebJobs page, select Add.

    WebJob page

  4. Use the Add WebJob settings as specified in the table.

    Add WebJob page

    Setting Sample value Description
    Name myTriggeredWebJob A name that is unique within an App Service app. Must start with a letter or a number and cannot contain special characters other than "-" and "_".
    File Upload ConsoleApp.zip A .zip file that contains your executable or script file as well as any supporting files needed to run the program or script. The supported executable or script file types are listed in the Supported file types section.
    Type Triggered The WebJob types are described earlier in this article.
    Triggers Manual
  5. Click OK.

    The new WebJob appears on the WebJobs page.

    List of WebJobs

  6. To run the WebJob, right-click its name in the list and click Run.

    Run WebJob

Create a scheduled WebJob

  1. In the Azure portal, go to the App Service page of your App Service web app, API app, or mobile app.

  2. Select WebJobs.

    Select WebJobs

  3. In the WebJobs page, select Add.

    WebJob page

  4. Use the Add WebJob settings as specified in the table.

    Add WebJob page

    Setting Sample value Description
    Name myScheduledWebJob A name that is unique within an App Service app. Must start with a letter or a number and cannot contain special characters other than "-" and "_".
    File Upload ConsoleApp.zip A .zip file that contains your executable or script file as well as any supporting files needed to run the program or script. The supported executable or script file types are listed in the Supported file types section.
    Type Triggered The WebJob types are described earlier in this article.
    Triggers Scheduled For the scheduling to work reliably, enable the Always On feature. Always On is available only in the Basic, Standard, and Premium pricing tiers.
    CRON Expression 0 0/20 * * * * CRON expressions are described in the following section.
  5. Click OK.

    The new WebJob appears on the WebJobs page.

    List of WebJobs

CRON expressions

A CRON expression is composed of six fields: {second} {minute} {hour} {day} {month} {day of the week}. Here are some examples:

  • Every 15 minutes: 0 */15 * * * *
  • Every hour (that is, whenever the count of minutes is 0): 0 0 * * * *
  • Every hour from 9 AM to 5 PM: 0 0 9-17 * * *
  • At 9:30 AM every day: 0 30 9 * * *
  • At 9:30 AM every weekday: 0 30 9 * * 1-5

You can enter the CRON expression in the portal or include a settings.job file at the root of your WebJob .zip file, as in the following example:

{
    "schedule": "0 */15 * * * *"
}

Note

When you deploy a WebJob from Visual Studio, mark your settings.job file properties as Copy if newer.

View the job history

  1. Select the WebJob you want to see history for, and then select the Logs button.

    Logs button

  2. In the WebJob Details page, select a time to see details for one run.

    WebJob Details

  3. In the WebJob Run Details page, select Toggle Output to see the text of the log contents.

    Web job run details

    To see the output text in a separate browser window, select download. To download the text itself, right-click download and use your browser options to save the file contents.

  4. Select the WebJobs breadcrumb link at the top of the page to go to a list of WebJobs.

    WebJob breadcrumb

    List of WebJobs in history dashboard

Next steps

The Azure WebJobs SDK can be used with WebJobs to simplify many programming tasks. For more information, see What is the WebJobs SDK.