Ejecución de tareas en segundo plano con WebJobs en Azure App Service

Implemente WebJobs mediante Azure Portal para cargar un archivo ejecutable o script. Puede ejecutar tareas en segundo plano en Azure App Service.

Si en lugar de Azure App Service usa Visual Studio 2019 para desarrollar e implementar WebJobs, consulte Implementación de WebJobs mediante Visual Studio.

Información general

WebJobs es una característica de Azure App Service que le permite ejecutar un programa o script en la misma instancia que una aplicación web, una aplicación de API o una aplicación móvil. No hay ningún coste adicional en el uso de trabajos web.

Puede usar el SDK de Azure WebJobs con WebJobs para simplificar muchas tareas de programación. WebJobs todavía no es compatible con App Service en Linux. Para obtener más información, consulte ¿Qué es el SDK de Webjobs?

Azure Functions proporciona otra manera de ejecutar programas y scripts. Para una comparación entre WebJobs y Functions, consulte Elección entre Flow, Logic Apps, Functions y WebJobs.

Tipos de WebJob

En la tabla siguiente se describen las diferencias entre los WebJobs continuo y desencadenado.

Continuo Desencadenado
Se inicia inmediatamente cuando se crea el WebJob. Para evitar que el trabajo finalice, el programa o script habitualmente funciona dentro de un bucle sin fin. Si el trabajo finaliza, es posible reiniciarlo. Normalmente se usa con el SDK de WebJobs. Se inicia solo cuando se desencadena manualmente o de acuerdo con una programación.
Se ejecuta en todas las instancias en que se ejecuta la aplicación web. También puede restringir el WebJob a una sola instancia. Se ejecuta en una sola instancia que Azure selecciona para el equilibrio de carga.
Admite la depuración remota. No admite la depuración remota.
El código se implementa en \site\wwwroot\app_data\Jobs\Continuous. El código se implementa en \site\wwwroot\app_data\Jobs\Triggered.

Nota

Una aplicación web puede agotar el tiempo de espera después de 20 minutos de inactividad y solo las solicitudes a la aplicación web real pueden restablecer el temporizador. Al ver la configuración de la aplicación en Azure Portal o realizar solicitudes en el sitio de herramientas avanzadas (https://<app_name>.scm.azurewebsites.net), no se restablece el temporizador. Si configura la aplicación web en la que se hospeda el trabajo para que se ejecute de forma continua, se ejecute según una programación o utilice desencadenadores basados en eventos, habilite la opción Siempre activado en la página Configuración de Azure de la aplicación web. La configuración Always On ayuda a asegurarse de que estos tipos de WebJob se ejecuten de forma confiable. Esta característica solo está disponible en los planes de tarifa Básico, Estándar y Premium.

Tipos de archivo admitidos para scripts o programas

Se admiten los tipos de archivo siguientes:

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

Creación de un WebJob continuo

Importante

Si tiene el control de código fuente configurado para la aplicación, WebJobs se deben implementar como parte de la integración del control de código fuente. Una vez configurado el control de código fuente con la aplicación, no se puede agregar una instancia de WebJobs desde Azure Portal.

  1. En Azure Portal, vaya a la página App Service de la aplicación web, la aplicación de API o la aplicación móvil de App Service.

  2. En el panel izquierdo de la página App Service de la aplicación, busque y seleccione WebJobs.

    Select WebJobs

  3. En la página WebJobs, seleccione Agregar.

    WebJob page

  4. Rellene la configuración de Agregar trabajo web como se especifica en la tabla.

    Screenshot that shows the Add WebJob settings that you need to configure.

    Configuración Valor de ejemplo Descripción
    Nombre myContinuousWebJob Nombre único dentro de una aplicación de App Service. Debe comenzar con una letra o un número y no puede contener caracteres especiales salvo "-" y "_".
    Carga de archivos ConsoleApp.zip Archivo ZIP que contiene el archivo de script o el archivo ejecutable así como cualquier archivo complementario necesario para ejecutar el programa o script. Los tipos de archivo de script o de archivo ejecutable compatibles aparecen en la sección Tipos de archivo admitidos.
    Tipo Continuo Los tipos de WebJob aparecen descritos anteriormente en este artículo.
    Escala Instancias múltiples Solo disponible para WebJobs continuos. Determina si el programa o el script se ejecuta en todas las instancias o solo en una. La opción para que se ejecute en varias instancias no se aplica a los planes de tarifa Gratis o Compartido.
  5. Seleccione Aceptar.

    El WebJob nuevo aparece en la página WebJobs. Si ve un mensaje que indica que se ha agregado el WebJob, pero no lo ve, seleccione Actualizar.

    List of WebJobs

  6. Para detener o reiniciar un WebJob continuo, haga clic con el botón derecho en el WebJob en la lista y seleccione Detener o Iniciar.

    Stop a continuous WebJob

Creación de un WebJob desencadenado de manera manual

  1. En Azure Portal, busque y seleccione App Services.

  2. Seleccione la aplicación web, la aplicación de API o la aplicación móvil de la lista.

  3. En el panel izquierdo de la página App Service de la aplicación, seleccione WebJobs.

    Select WebJobs

  4. En la página WebJobs, seleccione Agregar.

    WebJob page

  5. Rellene la configuración de Agregar trabajo web como se especifica en la tabla.

    Screenshot that shows the settings that need to be set for creating a manually triggered WebJob.

    Configuración Valor de ejemplo Descripción
    Nombre myTriggeredWebJob Nombre único dentro de una aplicación de App Service. Debe comenzar con una letra o un número y no puede contener caracteres especiales salvo "-" y "_".
    Carga de archivos ConsoleApp.zip Archivo ZIP que contiene el archivo de script o el archivo ejecutable así como cualquier archivo complementario necesario para ejecutar el programa o script. Los tipos de archivo de script o de archivo ejecutable compatibles aparecen en la sección Tipos de archivo admitidos.
    Tipo Desencadenado Los tipos de WebJob se han descrito anteriormente en este artículo.
    Desencadenadores Manual
  6. Seleccione Aceptar.

    El WebJob nuevo aparece en la página WebJobs. Si ve un mensaje que indica que se ha agregado el WebJob, pero no lo ve, seleccione Actualizar.

    List of WebJobs-triggered

  7. Para ejecutar el WebJob, haga clic con el botón derecho en su nombre en la lista y seleccione Ejecutar.

    Run WebJob

Creación de un WebJob programado

También se desencadena un WebJob programado. Puede programar que el desencadenador se active automáticamente según la programación que especifique.

  1. En Azure Portal, busque y seleccione App Services.

  2. Seleccione la aplicación web, la aplicación de API o la aplicación móvil de la lista.

  3. En el panel izquierdo de la página App Service de la aplicación, seleccione WebJobs.

    Select WebJobs

  4. En la página WebJobs, seleccione Agregar.

    WebJob page

  5. Rellene la configuración de Agregar trabajo web como se especifica en la tabla.

    Add WebJob page

    Configuración Valor de ejemplo Descripción
    Nombre myScheduledWebJob Nombre único dentro de una aplicación de App Service. Debe comenzar con una letra o un número y no puede contener caracteres especiales salvo "-" y "_".
    Carga de archivos ConsoleApp.zip Archivo ZIP que contiene el archivo de script o el archivo ejecutable así como cualquier archivo complementario necesario para ejecutar el programa o script. Los tipos de archivo de script o de archivo ejecutable compatibles aparecen en la sección Tipos de archivo admitidos.
    Tipo Desencadenado Los tipos de WebJob aparecen descritos anteriormente en este artículo.
    Desencadenadores Programado Para que la programación funcione de manera confiable, habilite la característica AlwaysOn. AlwaysOn solo está disponible en los planes de tarifa Básico, Estándar y Premium.
    Expresión CRON 0 0/20 * * * * Las expresiones CRON se describen en la sección siguiente.
  6. Seleccione Aceptar.

    El WebJob nuevo aparece en la página WebJobs. Si ve un mensaje que indica que se ha agregado el WebJob, pero no lo ve, seleccione Actualizar.

    List of WebJobs-scheduled

Expresiones NCRONTAB

Puede especificar una expresión NCRONTAB en el portal o incluir un archivo settings.job en la raíz del archivo .zip de WebJob, como en el ejemplo siguiente:

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

Para más información, consulte Programar un trabajo Web desencadenado.

Nota

La zona horaria predeterminada que se usa para ejecutar las expresiones CRON es la Hora universal coordinada (UTC). Para que la expresión CRON se ejecute según otra zona horaria, cree una configuración de aplicación para la aplicación de función denominada WEBSITE_TIME_ZONE. Para más información, consulte Zonas horarias de NCRONTAB.

Administración de WebJobs

Puede administrar el estado de ejecución de WebJobs individuales que se ejecutan en el sitio en Azure Portal. Simplemente vaya a Configuración>WebJobs, elija el WebJob y, a continuación, puede iniciar y detener el WebJob. También puede ver y modificar la contraseña del webhook que ejecuta el WebJob.

También puede agregar una configuración de la aplicación denominada WEBJOBS_STOPPED con un valor de 1 para detener todos los WebJobs que se ejecutan en el sitio. Esto puede ser práctico como una manera de evitar que los WebJobs en conflicto se ejecuten en espacios de ensayo y de producción. De forma similar, puede usar un valor de 1 para la opción de configuración WEBJOBS_DISABLE_SCHEDULE para deshabilitar los WebJobs desencadenados en el sitio o en un espacio de ensayo. En el caso de las ranuras, recuerde habilitar la opción Configuración de ranura de implementación para que no se intercambie la propia configuración.

Ver el historial de trabajos

  1. Seleccione el WebJob y, a continuación, para ver el historial, seleccione Registros.

    Logs button

  2. En la página Detalles del WebJob, seleccione una hora para ver los detalles de una ejecución.

    WebJob Details

  3. En la página Detalles de ejecución del WebJob, seleccione Alternar salida para ver el texto del contenido del registro.

    Web job run details

    Para ver el texto de salida en otra ventana del explorador, seleccione Descargar. Para descargar el texto propiamente tal, haga clic con el botón derecho en Descargar y use las opciones del explorador para guardar el contenido del archivo.

  4. Seleccione el vínculo de la ruta de navegación de los WebJobs que se encuentra en la parte superior de la página para ir a una lista de los WebJobs.

    WebJob breadcrumb

    List of WebJobs in history dashboard

Pasos siguientes

El SDK de Azure WebJobs se puede usar con WebJobs para simplificar muchas tareas de programación. Para obtener más información, consulte ¿Qué es el SDK de Webjobs?