Compartilhar 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 do serviço de aplicativo dão suporte a WebJobs. Não há nenhum custo extra para usar WebJobs.

Visão geral

O 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 do serviço de aplicativo dão suporte a WebJobs. Não há nenhum 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 oferece outra maneira de executar programas e scripts. Para obter uma comparação entre WebJobs e Functions, consulte Escolher a integração certa e os serviços de automação no Azure.

Tipos de WebJob

Tipos de arquivo com suporte para scripts ou programas

Há suporte para os tipos de arquivo a seguir:

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

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

WebJobs contínuo versus disparado

A tabela a seguir descreve as diferenças entre o WebJobs contínuo e disparado:

Contínuo Disparado
É iniciado imediatamente quando o WebJob é criado. Para impedir o encerramento do trabalho, o programa ou o script normalmente faz seu trabalho dentro de um loop infinito. Se o trabalho for encerrado, você poderá reiniciá-lo. Normalmente usado com o SDK do WebJobs. É iniciado apenas quando disparado manualmente ou de acordo com um agendamento.
É executado em todas as instâncias nas quais o aplicativo Web é executado. Opcionalmente, você pode restringir o WebJob a uma única instância. É executado em uma única instância selecionada pelo Azure para balanceamento de carga.
Dá suporte à depuração remota. Não dá suporte à 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.

Observação

Um aplicativo Web pode atingir o tempo limite após 20 minutos de inatividade, e somente as solicitações ao 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 não redefine o temporizador. Se você definir o aplicativo Web que hospeda seu trabalho para ser executado continuamente, executar em um agendamento ou usar gatilhos controlados por eventos, habilite a configuração Always on no painel configuração do Azure do aplicativo Web. A configuração Always On ajuda a garantir que esses tipos de WebJobs sejam executados de forma confiável. Este recurso está disponível apenas nos tipos de preço Básico, Standard e Premium.

Criar um WebJob contínuo

Importante

Se o controle do código-fonte estiver configurado no seu aplicativo, implante os WebJobs como parte da integração do controle do código-fonte. Depois de configurar o controle do código-fonte no seu aplicativo, não é possível adicionar WebJobs do portal do Azure.

  1. No portal do Azure, acesse a página Serviço de Aplicativo do 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 tela que mostra como configurar um WebJob contínuo de várias instâncias em um aplicativo do Serviço de Aplicativo.

    Configuração Valor de exemplo 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, exceto "-" e "_".
    Upload de arquivos ConsoleApp.zip Um arquivo .zip que contém o arquivo executável ou de script, bem como os arquivos de suporte necessários para executar o programa ou o script. Os tipos de executável ou arquivo de script com suporte são listados na seção Tipos de arquivo com suporte.
    Tipo Contínuo Os tipos do WebJob foram descritos anteriormente neste artigo.
    Escala Várias instâncias Disponível somente para WebJobs Contínuos. Determina se o programa ou script é executado em todas as instâncias ou apenas em uma. A opção de execução em várias instâncias não se aplica aos tipos de preço Gratuito ou Compartilhado.
  4. O novo WebJob é exibido na página WebJobs. Se você vir uma mensagem que diz que o WebJob foi adicionado, mas ele não aparecer, clique em Atualizar.

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

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

Criar um WebJob disparado manualmente

  1. No portal do Azure, acesse a página Serviço de Aplicativo do 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 mostrando como adicionar um WebJob em um aplicativo do Serviço de Aplicativo no portal (WebJob disparado manualmente).

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

    Captura de tela mostrando como configurar um WebJob disparado manualmente em um aplicativo do Serviço de Aplicativo.

    Configuração Valor de exemplo 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, exceto "-" e "_".
    Upload de arquivos ConsoleApp1.zip Um arquivo .zip que contém o arquivo executável ou de script, bem como os arquivos de suporte necessários para executar o programa ou o script. Os tipos de executável ou arquivo de script com suporte são listados na seção Tipos de arquivo com suporte.
    Tipo Disparado Os tipos do WebJob foram descritos anteriormente neste artigo.
    Gatilhos Manual
  4. O novo WebJob é exibido na página WebJobs. Se você vir uma mensagem que diz que o WebJob foi adicionado, mas ele não aparecer, clique em Atualizar.

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

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

Criar um WebJob agendado

Um WebJob agendado também é disparado. Você pode agendar o disparo automático de acordo com o agendamento especificado.

  1. No portal do Azure, acesse a página Serviço de Aplicativo do 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 agendado).

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

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

    Configuração Valor de exemplo 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, exceto "-" e "_".
    Upload de arquivos ConsoleApp.zip Um arquivo .zip que contém o arquivo executável ou de script, bem como os arquivos de suporte necessários para executar o programa ou o script. Os tipos de executável ou arquivo de script com suporte são listados na seção Tipos de arquivo com suporte.
    Tipo Disparado Os tipos do WebJob foram descritos anteriormente neste artigo.
    Gatilhos Agendado Para que o agendamento funcione de modo confiável, habilite o recurso AlwaysOn. O AlwaysOn está disponível apenas nos tipos de preço Básico, 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 é exibido na página WebJobs. Se você vir uma mensagem que diz que o WebJob foi adicionado, mas ele não aparecer, clique em Atualizar.

  5. O WebJob agendado é executado de acordo com o agendamento definido pela expressão CRON. Para executar um WebJob disparado manualmente a qualquer hora, clique com o botão direito do mouse no WebJob na lista, selecione o botão Executar e 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 arquivo settings.job na raiz do seu .zip arquivo WebJob, como no exemplo a seguir:

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

Para saber mais, veja Agendamento de um WebJob disparado.

Observação

O fuso horário padrão usado para executar expressões CRON é o UTC (Tempo Universal Coordenado). Para que a expressão CRON seja executada com base em outro fuso horário, crie uma configuração de aplicativo para o aplicativo de funções denominada WEBSITE_TIME_ZONE. Para saber mais, confira Fusos horários do 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. Acesse Configurações>WebJobs, escolha o WebJob e será possível iniciá-lo e pará-lo. Você também pode exibir 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 parar todos os WebJobs que estão em execução em seu site. Isso pode ajudar a impedir que WebJobs conflitantes sejam executados em slots de preparo e produção. Da mesma forma, você pode usar o valor 1 na configuração de WEBJOBS_DISABLE_SCHEDULE para desativar WebJobs disparados no site ou em um slot de preparo. Em slots, lembre-se de habilitar a opção de Configuração de slot de implantação para que a configuração em si não seja trocada.

Exibir o histórico do trabalho

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

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

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

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

  3. Na página Detalhes da Execução do WebJob, você pode selecionar Baixar para obter um arquivo de texto dos logs ou selecionar o link de trilha de WebJobs na parte superior da página para ver os logs de um WebJob diferente.

Status do WebJob

Veja a seguir uma lista de estados comuns do WebJob:

  • Inicialização: o aplicativo foi iniciado e o WebJob está passando por seu processo de inicialização.
  • Iniciando: o WebJob está sendo iniciado.
  • 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 for encerrado após a marca dos dois minutos, o Serviço de Aplicativo não aguardará 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é você iniciá-lo novamente manualmente, mesmo para um WebJob contínuo ou agendado.
  • Anulado: isso pode ocorrer por muitos motivos, como quando um WebJob de longa execução atinge o marcador de tempo limite.

Próxima etapa

Tutorial: Executar tarefas em segundo plano com WebJobs