Compartir a través de


Ejecución de tareas en segundo plano con WebJobs

En este artículo se explica cómo implementar WebJobs mediante Azure Portal para cargar un archivo ejecutable o un script. WebJobs es una característica de Azure App Service que permite ejecutar un programa o script en la misma instancia que una aplicación web. Todos los planes de servicios de aplicaciones admiten WebJobs. No hay ningún costo adicional para usar WebJobs.

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. Todos los planes de servicios de aplicaciones admiten WebJobs. No hay ningún costo adicional para usar WebJobs.

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

Azure Functions proporciona otra manera de ejecutar programas y scripts. Para obtener una comparación entre WebJobs y Functions, consulte Elección de los servicios de integración y automatización adecuados en Azure.

Tipos de WebJob

Tipos de archivo admitidos para scripts o programas

Se admiten los tipos de archivo siguientes:

  • Uso de cmd de Windows: .cmd, .bat, .exe
  • Uso de PowerShell: .ps1
  • Uso de Bash: .sh
  • Uso de Node.js: .js
  • Uso de Java: .jar

Los entornos de ejecución necesarios para ejecutar estos tipos de archivo ya están instalados en la instancia de la aplicación web.

WebJobs continuos frente a desencadenados

En la tabla siguiente, se describen las diferencias entre los WebJobs continuos y desencadenados:

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. La visualización de la configuración de la aplicación en Azure Portal o la realización de solicitudes al sitio de herramientas avanzadas no restablece el temporizador. Si establece la aplicación web que hospeda el trabajo para que se ejecute continuamente, se ejecute según una programación o use desencadenadores controlados por eventos, habilite la configuración AlwaysOn en el panel Configuración de Azure de la aplicación web. La configuración Always On ayuda a asegurarse de que estos tipos de WebJobs se ejecutan de forma confiable. Esta característica solo está disponible en los planes de tarifa Básico, Estándar y Premium.

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 Configuración en el panel izquierdo, seleccione WebJobs y, a continuación, seleccione Agregar.

    Captura de pantalla que muestra cómo agregar un trabajo web en una aplicación de App Service en el portal.

  3. Rellene la configuración Agregar WebJob tal como se especifica en la tabla y seleccione Crear webjob.

    Captura de pantalla que muestra cómo configurar un WebJob continuo de varias instancias para una aplicación de App Service.

    Configuración Valor de ejemplo Descripción
    Nombre myContinuousWebJob Nombre único de WebJob. Debe comenzar con una letra o un número y no debe contener caracteres especiales distintos de "-" y "_".
    Carga de archivos ConsoleApp.zip Archivo .zip que contiene el archivo de script o el archivo ejecutable y 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 en una. La opción para que se ejecute en varias instancias no se aplica a los planes de tarifa Gratis o Compartido.
  4. 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.

  5. Para detener o reiniciar un WebJob continuo, haga clic con el botón derecho en el WebJob en la lista y seleccione el botón Detener o Ejecutar, y confirme su selección.

    Captura de pantalla que muestra cómo detener un trabajo web continuo en Azure Portal.

Creación de un WebJob desencadenado de manera manual

  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 Configuración en el panel izquierdo, seleccione WebJobs y, a continuación, seleccione Agregar.

    Captura de pantalla que muestra cómo agregar un WebJob en una aplicación de App Service en el portal (WebJob desencadenado manualmente).

  3. Rellene la configuración Agregar WebJob tal como se especifica en la tabla y seleccione Crear webjob.

    Captura de pantalla que muestra cómo configurar un WebJob continuo desencadenado manualmente para una aplicación de App Service.

    Configuración Valor de ejemplo Descripción
    Nombre myTriggeredWebJob Nombre único de WebJob. Debe comenzar con una letra o un número y no debe contener caracteres especiales distintos de "-" y "_".
    Carga de archivos ConsoleApp1.zip Archivo .zip que contiene el archivo de script o el archivo ejecutable y 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 de instrucciones
  4. 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.

  5. Para ejecutar un WebJob desencadenado manualmente, haga clic con el botón derecho en el WebJob en la lista y seleccione el botón Ejecutar y confirme la selección.

    Captura de pantalla que muestra cómo ejecutar un webjob desencadenado manualmente en Azure Portal.

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, 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 Configuración en el panel izquierdo, seleccione WebJobs y, a continuación, seleccione Agregar.

    Recorte de pantalla que muestra cómo agregar un WebJob en una aplicación de App Service en el portal (WebJob programado).

  3. Rellene la configuración Agregar WebJob tal como se especifica en la tabla y seleccione Crear webjob.

    Captura de pantalla que muestra cómo configurar un WebJob programado en una aplicación de App Service.

    Configuración Valor de ejemplo Descripción
    Nombre myScheduledWebJob Nombre único de WebJob. Debe comenzar con una letra o un número y no debe contener caracteres especiales distintos de "-" y "_".
    Carga de archivos ConsoleApp.zip Archivo .zip que contiene el archivo de script o el archivo ejecutable y 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.
  4. 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.

  5. El trabajo web programado se ejecuta según la programación definida por la expresión CRON. Para ejecutarlo un manualmente en cualquier momento, haga clic con el botón derecho en el WebJob en la lista y seleccione el botón Ejecutar y confirme la selección.

    Captura de pantalla que muestra cómo ejecutar un trabajo web programado manualmente en Azure Portal.

Expresiones NCRONTAB

Una expresión NCRONTAB es similar a una expresión CRON, pero incluye un sexto campo adicional al principio para la precisión de tiempo en segundos. Puede escribir una expresión NCRONTAB en el portal o incluir un archivo settings.job en la raíz de su archivo WebJob.zip, 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 mediante Azure Portal. 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 configurar una configuración de aplicación denominada WEBJOBS_STOPPED con un valor de 1 para detener todos los WebJobs que se ejecutan en el sitio. Puede usar este método para 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. Para el WebJob que desea ver, seleccione Registros.

    Captura de pantalla que muestra cómo acceder a los registros de un trabajo web.

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

    Captura de pantalla que muestra cómo elegir una ejecución de WebJob para ver sus registros detallados.

  3. En la página Detalles de ejecución de WebJob, puede seleccionar descargar para obtener un archivo de texto de los registros o seleccionar el vínculo de ruta de navegación de WebJobs en la parte superior de la página para ver los registros de un WebJob diferente.

Estado de WebJob

A continuación se muestra una lista de estados comunes de WebJob:

  • Inicialización: la aplicación se ha iniciado y webJob pasa por su proceso de inicialización.
  • Inicio: El WebJob se está poniendo en marcha.
  • En ejecución: WebJob se está ejecutando.
  • PendingRestart: Un WebJob continuo termina en menos de dos minutos después de comenzar por cualquier motivo y App Service espera 60 segundos antes de reiniciar el WebJob. Si el WebJob continuo sale después de la marca de dos minutos, App Service no espera los 60 segundos y reinicia el WebJob inmediatamente.
  • Detenido: WebJob se detuvo (normalmente desde Azure Portal) y actualmente no se está ejecutando y no se ejecutará hasta que vuelva a iniciarlo manualmente, incluso para un WebJob continuo o programado.
  • Anulado: esto puede ocurrir por muchas razones, como cuando un trabajo web de ejecución prolongada alcanza el marcador de tiempo de espera.

Paso siguiente

Tutorial: Ejecución de tareas en segundo plano con WebJobs