Partilhar via


Executar tarefas em segundo plano com o WebJobs

Este artigo explica como implantar WebJobs usando o portal do Azure para carregar um executável ou script. 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.

Descrição geral

WebJobs é uma funcionalidade do Azure App Service que permite executar um programa ou script na mesma instância de uma aplicação web. Todos os planos de serviço de aplicativo suportam WebJobs. Não há custo extra para usar WebJobs.

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

O Azure Functions fornece outra maneira de executar programas e scripts. Para obter uma comparação entre WebJobs e Functions, consulte Escolher os serviços de integração e automação certos no Azure.

Tipos de WebJob

Tipos de ficheiros suportados para scripts ou programas

Importante

WebJobs não são suportados em contêineres Linux personalizados baseados no Alpine Linux, incluindo aplicativos Linux usando pilhas de tempo de execução Java 8 e Java 11. A partir dos aplicativos Java 17 Linux, o Serviço de Aplicativo do Azure usa imagens não baseadas em Alpinos, que são compatíveis com WebJobs.

Os seguintes tipos de ficheiro são suportados:

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

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

WebJob Contínuo vs. Acionado

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

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 é implementado sob \site\wwwroot\app_data\Jobs\Continuous. O código é implementado sob \site\wwwroot\app_data\Jobs\Triggered.

Nota

Uma aplicação web pode expirar após 20 minutos de inatividade, e apenas solicitações para a própria aplicação web podem redefinir o cronómetro. Exibir a configuração do aplicativo no portal do Azure ou fazer solicitações para o site de ferramentas avançadas 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 ativado no painel 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. Em Configurações 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 ecrã que mostra como configurar um WebJob contínuo de várias instâncias para uma aplicação do Serviço de Aplicações.

    Configuração Valor de amostra Descrição
    Nome myContinuousWebJob Um nome WebJob exclusivo. 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 executar em múltiplas instâncias não se aplica aos níveis de preços Gratuitos ou Partilhados .
  4. O novo WebJob aparece na página WebJobs . Se vir uma mensagem a dizer que o WebJob foi adicionado, mas não a vê, 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. Em Configurações 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 ecrã que mostra como configurar um WebJob acionado manualmente para um aplicativo do Serviço de Apps.

    Configuração Valor de amostra Descrição
    Nome myTriggeredWebJob Um nome WebJob exclusivo. 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 vê, 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. Em Configurações no painel esquerdo, selecione WebJobs e, em seguida, selecione Adicionar.

    Captura de ecrã que mostra como adicionar um WebJob numa aplicação do Serviço de Aplicações no portal (WebJob agendado).

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

    Captura de ecrã que mostra como configurar um WebJob agendado numa aplicação do Serviço de Aplicações.

    Configuração Valor de amostra Descrição
    Nome myScheduledWebJob Um nome WebJob exclusivo. 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 Programado 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 vê, selecione Atualizar.

  5. O WebJob agendado é executado de acordo com o 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

Uma expressão NCRONTAB é semelhante a uma expressão CRON, mas inclui um sexto campo adicional no início para precisão de tempo em segundos. Você pode inserir uma expressão NCRONTAB no portal ou incluir um ficheiro settings.job na raiz do ficheiro WebJob.zip, como no exemplo a seguir:

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

Para saber mais, consulte Programação de um WebJob disparado.

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 o estado de execução de WebJobs individuais em execução em seu site usando o 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 definir 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. De forma semelhante, pode usar um valor de 1 para a definição de WEBJOBS_DISABLE_SCHEDULE para desabilitar os WebJobs acionados no site ou em um slot de encenação. Para os espaços, lembre-se de ativar a opção Configuração de slot de implantação para que a própria configuração 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.

Estado do WebJob

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

  • Inicialização: O aplicativo foi iniciado e o WebJob está passando por seu processo de inicialização.
  • Início: O WebJob está a arrancar.
  • Em execução: 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.
  • Parado: 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 várias razões, como quando um WebJob de longa duração atinge o limite de tempo.

Próximo passo

Tutorial: Executar tarefas em segundo plano com WebJobs