Executar tarefas em segundo plano com WebJobs no Serviço de Aplicativo do Azure

Implante WebJobs usando o portal do Azure para carregar um executável ou script. Você pode executar tarefas em segundo plano no Serviço de Aplicativo do Azure.

Se, em vez do Serviço de Aplicativo do Azure, você estiver usando o Visual Studio para desenvolver e implantar WebJobs, consulte Implantar WebJobs usando o Visual Studio.

Nota

WebJobs para contêiner do Windows, código Linux e contêiner Linux está em visualização. O código WebJobs para Windows está disponível em geral e não em visualização.

Descrição geral

WebJobs é um recurso do Serviço de Aplicativo do Azure que permite executar um programa ou script na mesma instância de um aplicativo Web. Todos os planos de serviço de aplicativo suportam WebJobs. Não há custo extra para usar WebJobs.

Nota

A partir de 1º de junho de 2024, todos os aplicativos do Serviço de Aplicativo recém-criados terão a opção de gerar um nome de host padrão exclusivo usando a convenção <app-name>-<random-hash>.<region>.azurewebsites.netde nomenclatura. Os nomes de aplicativos existentes permanecerão inalterados.

Exemplo: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Para obter mais detalhes, consulte Nome de host padrão exclusivo para recurso do Serviço de Aplicativo.

Você pode usar o SDK de WebJobs do Azure com WebJobs para simplificar muitas tarefas de programação. Para obter mais informações, consulte O que é o SDK WebJobs.

O Azure Functions fornece outra maneira de executar programas e scripts. Para obter uma comparação entre WebJobs e Functions, consulte Choose between Flow, Logic Apps, Functions e WebJobs.

Tipos de WebJob

Tipos de ficheiros suportados para scripts ou programas

Os seguintes tipos de ficheiro são suportados:
.cmd, .bat, .exe (usando o Windows cmd)
.ps1 (usando o PowerShell)
.sh (usando Bash)
.php (usando PHP)
.py (usando Python)
.js (usando Node.js)
.jar (usando Java)

Os tempos de execução necessários para executar esses tipos de arquivo já estão instalados na instância do aplicativo Web.

WebJobs contínuos vs. acionados

A tabela a seguir descreve as diferenças entre WebJobs contínuos e acionados :

Contínuo Acionado
Inicia imediatamente quando o WebJob é criado. Para evitar que o trabalho termine, o programa ou script normalmente faz seu trabalho dentro de um loop infinito. Se o trabalho terminar, você poderá reiniciá-lo. Normalmente usado com o SDK WebJobs. Inicia somente quando acionado manualmente ou em uma programação.
É executado em todas as instâncias em que o aplicativo Web é executado. Opcionalmente, você pode restringir o WebJob a uma única instância. É executado em uma única instância que o Azure seleciona para balanceamento de carga.
Suporta depuração remota. Não suporta depuração remota.
O código é implantado em \site\wwwroot\app_data\Jobs\Continuous. O código é implantado em \site\wwwroot\app_data\Jobs\Triggered.

Nota

Um aplicativo Web pode atingir o tempo limite após 20 minutos de inatividade, e somente solicitações para o aplicativo Web real podem redefinir o temporizador. Exibir a configuração do aplicativo no portal do Azure ou fazer solicitações para o site de ferramentas avançadas (https://<app_name>.scm.azurewebsites.net) não redefine o temporizador. Se você definir o aplicativo Web que hospeda seu trabalho para ser executado continuamente, executado em uma agenda ou usar gatilhos controlados por eventos, habilite a configuração Sempre ligado na página Configuração do Azure do seu aplicativo Web. A configuração Sempre ligado ajuda a garantir que esses tipos de WebJobs sejam executados de forma confiável. Esse recurso está disponível apenas nos níveis de preços Basic, Standard e Premium.

Criar um WebJob contínuo

Importante

Quando você tiver o controle do código-fonte configurado para seu aplicativo, os Webjobs devem ser implantados como parte da integração do controle do código-fonte. Depois que o controle do código-fonte é configurado para seu aplicativo, um WebJob não pode ser adicionado do portal do Azure.

  1. No portal do Azure, vá para a página Serviço de Aplicativo do seu aplicativo Web, aplicativo de API ou aplicativo móvel do Serviço de Aplicativo.

  2. No painel esquerdo, selecione WebJobs e, em seguida, selecione Adicionar.

    Captura de tela que mostra como adicionar um WebJob em um aplicativo do Serviço de Aplicativo no portal.

  3. Preencha as configurações Adicionar WebJob conforme especificado na tabela e selecione Criar Webjob.

    Captura de tela que mostra como configurar um WebJob contínuo de várias instâncias para um aplicativo do Serviço de Aplicativo.

    Definição Valores de exemplo Descrição
    Nome myContinuousWebJob Um nome exclusivo dentro de um aplicativo do Serviço de Aplicativo. Deve começar com uma letra ou um número e não deve conter caracteres especiais além de "-" e "_".
    Upload de arquivo ConsoleApp.zip Um arquivo .zip que contém seu arquivo executável ou script e todos os arquivos de suporte necessários para executar o programa ou script. Os tipos de arquivo executáveis ou de script suportados estão listados na seção Tipos de arquivo suportados.
    Tipo Contínuo Os tipos de WebJob são descritos anteriormente neste artigo.
    Escala Várias instâncias Disponível apenas para WebJobs contínuos. Determina se o programa ou script é executado em todas as instâncias ou em uma instância. A opção de execução em várias instâncias não se aplica aos níveis de preços Gratuito ou Compartilhado.
  4. O novo WebJob aparece na página WebJobs . Se vir uma mensagem a dizer que o WebJob foi adicionado, mas não a vir, selecione Atualizar.

  5. Para parar ou reiniciar um WebJob contínuo, clique com o botão direito do mouse no WebJob na lista e selecione o botão Parar ou Executar e, em seguida, confirme sua seleção.

    Captura de ecrã que mostra como parar um WebJob contínuo no portal do Azure.

Criar um WebJob acionado manualmente

  1. No portal do Azure, vá para a página Serviço de Aplicativo do seu aplicativo Web, aplicativo de API ou aplicativo móvel do Serviço de Aplicativo.

  2. No painel esquerdo, selecione WebJobs e, em seguida, selecione Adicionar.

    Captura de tela que mostra como adicionar um WebJob em um aplicativo do Serviço de Aplicativo no portal (WebJob acionado manualmente).

  3. Preencha as configurações Adicionar WebJob conforme especificado na tabela e selecione Criar Webjob.

    Captura de tela que mostra como configurar um WebJob acionado manualmente para um aplicativo do Serviço de Aplicativo.

    Definição Valores de exemplo Descrição
    Nome myTriggeredWebJob Um nome exclusivo dentro de um aplicativo do Serviço de Aplicativo. Deve começar com uma letra ou um número e não deve conter caracteres especiais além de "-" e "_".
    Upload de arquivo ConsoleApp1.zip Um arquivo .zip que contém seu arquivo executável ou script e todos os arquivos de suporte necessários para executar o programa ou script. Os tipos de arquivo executáveis ou de script suportados estão listados na seção Tipos de arquivo suportados.
    Tipo Acionado Os tipos de WebJob são descritos anteriormente neste artigo.
    Acionadores Manual
  4. O novo WebJob aparece na página WebJobs . Se vir uma mensagem a dizer que o WebJob foi adicionado, mas não a vir, selecione Atualizar.

  5. Para executar um WebJob acionado manualmente, clique com o botão direito do mouse no WebJob na lista e selecione o botão Executar e confirme sua seleção.

    Captura de tela que mostra como executar um WebJob acionado manualmente no portal do Azure.

Criar um WebJob agendado

Um Webjob agendado também é acionado. Você pode agendar o gatilho para ocorrer automaticamente no cronograma especificado.

  1. No portal do Azure, vá para a página Serviço de Aplicativo do seu aplicativo Web, aplicativo de API ou aplicativo móvel do Serviço de Aplicativo.

  2. No painel esquerdo, selecione WebJobs e, em seguida, selecione Adicionar.

    Captura de tela que mostra como adicionar um WebJob em um aplicativo do Serviço de Aplicativo no portal (WebJob agendado).

  3. Preencha as configurações Adicionar WebJob conforme especificado na tabela e selecione Criar Webjob.

    Captura de tela que mostra como configurar um WebJob agendado em um aplicativo do Serviço de Aplicativo.

    Definição Valores de exemplo Descrição
    Nome myScheduledWebJob Um nome exclusivo dentro de um aplicativo do Serviço de Aplicativo. Deve começar com uma letra ou um número e não deve conter caracteres especiais além de "-" e "_".
    Upload de arquivo ConsoleApp.zip Um arquivo .zip que contém seu arquivo executável ou script e todos os arquivos de suporte necessários para executar o programa ou script. Os tipos de arquivo executáveis ou de script suportados estão listados na seção Tipos de arquivo suportados.
    Tipo Acionado Os tipos de WebJob são descritos anteriormente neste artigo.
    Acionadores Agendado Para que o agendamento funcione de forma confiável, habilite o recurso Always On. O Always On está disponível apenas nos níveis de preços Basic, Standard e Premium.
    Expressão CRON 0 0/20 * * * * As expressões CRON são descritas na seção a seguir.
  4. O novo WebJob aparece na página WebJobs . Se vir uma mensagem a dizer que o WebJob foi adicionado, mas não a vir, selecione Atualizar.

  5. O WebJob agendado é executado no cronograma definido pela expressão CRON. Para executá-lo manualmente a qualquer momento, clique com o botão direito do mouse no WebJob na lista e selecione o botão Executar e, em seguida, confirme sua seleção.

    Captura de tela que mostra como executar um WebJob agendado manualmente no portal do Azure.

Expressões NCRONTAB

Você pode inserir uma expressão NCRONTAB no portal ou incluir um settings.job arquivo na raiz do seu arquivo WebJob .zip , como no exemplo a seguir:

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

Para saber mais, consulte Agendando um WebJob acionado.

Nota

O fuso horário padrão usado para executar expressões CRON é o Tempo Universal Coordenado (UTC). Para que sua expressão CRON seja executada com base em outro fuso horário, crie uma configuração de aplicativo para seu aplicativo de função chamado WEBSITE_TIME_ZONE. Para saber mais, consulte Fusos horários NCRONTAB.

Gerenciar WebJobs

Você pode gerenciar os WebJobs individuais de estado em execução em execução em seu site no portal do Azure. Vá para Configurações>WebJobs, escolha o WebJob, e você pode iniciar e parar o WebJob. Você também pode visualizar e modificar a senha do webhook que executa o WebJob.

Você também pode adicionar uma configuração de aplicativo nomeada WEBJOBS_STOPPED com um valor de 1 para interromper todos os WebJobs em execução em seu site. Você pode usar esse método para evitar que WebJobs conflitantes sejam executados em slots de preparação e produção. Da mesma forma, você pode usar um valor de para a WEBJOBS_DISABLE_SCHEDULE configuração para desabilitar WebJobs acionados no site ou em um slot de 1 preparação. Para slots, lembre-se de ativar a opção de configuração de slot de implantação para que a configuração em si não seja trocada.

Ver o histórico de trabalhos

  1. Para o WebJob que você deseja ver, selecione Logs.

    Captura de tela que mostra como acessar logs para um WebJob.

  2. Na página Detalhes do WebJob, selecione um horário para ver os detalhes de uma execução.

    Captura de tela que mostra como escolher uma execução WebJob para ver seus logs detalhados.

  3. Na página WebJob Run Details, você pode selecionar download para obter um arquivo de texto dos logs ou selecionar o link WebJobs breadcrumb na parte superior da página para ver os logs de um WebJob diferente.

Status do WebJob

A seguir está uma lista de status comuns do WebJob:

  • Inicialização O aplicativo foi iniciado e o WebJob está passando por seu processo de inicialização.
  • Iniciando o WebJob está começando.
  • Executando o WebJob está em execução.
  • PendingRestart Um WebJob contínuo é encerrado em menos de dois minutos desde que foi iniciado por qualquer motivo, e o Serviço de Aplicativo aguarda 60 segundos antes de reiniciar o WebJob. Se o WebJob contínuo sair após a marca de dois minutos, o Serviço de Aplicativo não esperará os 60 segundos e reiniciará o WebJob imediatamente.
  • Interrompido O WebJob foi interrompido (geralmente do portal do Azure) e atualmente não está em execução e não será executado até que você o inicie novamente manualmente, mesmo para um WebJob contínuo ou agendado.
  • Abortado Isso pode ocorrer por muitos motivos, como quando um WebJob de longa duração atinge o marcador de tempo limite.

Próximos passos

O SDK de WebJobs do Azure pode ser usado com WebJobs para simplificar muitas tarefas de programação. Para obter mais informações, consulte O que é o SDK WebJobs.