Como criar e configurar cron jobs

Com o Cloud Scheduler, você define a execução de unidades de trabalho programadas, conhecidas como cron jobs. Elas são enviadas aos destinos de acordo com uma programação recorrente, também conhecida como intervalo ou frequência do job. Você pode criar esses jobs usando o Console do GCP ou a ferramenta de linha de comando gcloud.

Apenas uma única instância de um job deve ser executada por vez. Além disso, o Cloud Scheduler foi projetado para o modelo de entrega "pelo menos uma vez", ou seja, o Cloud Scheduler envia pelo menos uma vez a solicitação de jobs programados. Em raras circunstâncias, é possível que sejam solicitadas diversas instâncias do mesmo job. Sendo assim, seu gerenciador de solicitações deve ser idempotente, e o código deve garantir que não haja efeitos colaterais prejudiciais se isso ocorrer.

Como criar jobs

Para criar um job, você pode usar o console ou a linha de comando gcloud. Clique na guia adequada:

Console

  1. Acesse a página do Console do Cloud Scheduler.

    Cloud Scheduler

  2. Clique em Criar job.

    captura de tela

  3. Dê um nome ao job. Ele precisa ser exclusivo no projeto. Você pode reutilizar o nome de um job em um projeto depois de excluir o job com esse nome.

  4. Se quiser, você também pode inserir uma breve descrição do job, como um lembrete da função dele. Essa descrição é exibida no console, ao lado do nome do job.

  5. Especifique a frequência, ou o intervalo, de execução do job usando uma string de configuração. Por exemplo, a string 0 */3 * * * executa o job a cada 3 horas. Você pode usar aqui qualquer string compatível com o formato crontab. Os desenvolvedores também podem usar a sintaxe de cron do App Engine se estiverem familiarizados com o antigo formato de cron do App Engine.

    Para mais informações, consulte Como configurar programações de jobs.

  6. Na lista suspensa, escolha o fuso horário da frequência do job.

  7. Especifique o destino:

  8. Clique em Criar para criar e salvar o job. O job será executado com a frequência especificada.

Gcloud

Ao criar jobs pela linha de comando gcloud, você deve usar comandos diferentes para cada tipo de destino. Clique nos destinos abaixo para ver exemplos da linha de comando:

Destino Pub/Sub

Se você escolher o destino Pub/Sub,

  1. especifique o nome do tópico em que o job será publicado. Deve ser um tópico do Pub/Sub já configurado no seu projeto.

  2. Especifique a mensagem para enviar ao tópico. Ela será enviada como o parâmetro data na mensagem do Pub/Sub. Veja um exemplo no guia de início rápido.

O Cloud Scheduler publicará mensagens no tópico como uma conta de serviço das APIs do Google. A configuração de destino Pub/Sub não inclui opções para a definição de novas tentativas porque o Pub/Sub tem seu próprio mecanismo e a própria política de repetição.

Destino do App Engine

Se você escolher o destino App Engine HTTP, deverá usar o aplicativo do Google App Engine associado ao projeto atual. Para usar um aplicativo do Google App Engine fora do projeto atual, escolha HTTP como destino, e não App Engine HTTP.

Defina o formulário da seguinte maneira:

  1. Especifique o URL relativo do ponto de extremidade do App Engine com que o job entrará em contato. Se você usar o valor padrão /, o job usará PROJECT-ID.appspot.com. PROJECT-ID representa o código do projeto atual.

  2. Especifique o nome do serviço do App Engine que está executando o gerenciador do job do Cloud Scheduler. O serviço default é usado quando essa opção é omitida. Para defini-la, veja os nomes dos serviços no Console do Google Cloud Platform.

  3. Defina o método HTTP que você quer usar ao executar o job. O padrão é POST.

  4. Você também pode especificar a versão. Se ela não for definida, será usada a versão disponibilizada no momento. Consulte as versões disponíveis no Console do Google Cloud Platform.

  5. Também é possível especificar a instância. Se ela não for definida, qualquer instância disponível poderá ser usada. Consulte as versões disponíveis no Console do Google Cloud Platform.

  6. Se você quiser, pode especificar também os dados que serão enviados ao destino. Esses dados são enviados no corpo da solicitação quando os métodos HTTP POST ou PUT forem selecionados.

Os endpoints do App Engine definidos como destino precisam estar no mesmo projeto e podem ter o elemento login: admin protegido com handlers no arquivo app.yaml.

Destino HTTP

Se você escolher o destino HTTP,

  1. especifique o URL completo do ponto de extremidade com que o job entrará em contato.

  2. Especifique o método HTTP. O padrão é POST.

  3. Se você quiser, pode especificar também os dados que serão enviados ao destino. Esses dados são enviados no corpo da solicitação quando os métodos HTTP POST ou PUT forem selecionados.

Os pontos de extremidade HTTP de destino precisam estar publicamente acessíveis.

Destino Pub/Sub

Você precisa usar um tópico Pub/Sub já configurado no seu projeto. O Cloud Scheduler publicará mensagens no tópico como uma conta de serviço das APIs do Google.

Sintaxe

gcloud beta scheduler jobs create pubsub JOB --schedule=SCHEDULE --topic=TOPIC (--message-body=MESSAGE_BODY | --message-body-from-file=MESSAGE_BODY_FROM_FILE) [optional flags]

Para usar o destino Pub/Sub na linha de comando:

  1. Em JOB, especifique o nome do job. Ele precisa ser exclusivo no projeto. Você não pode reutilizar o nome de um job em um projeto mesmo depois de excluir o job com esse nome.

  2. Especifique a programação, também chamada de frequência ou intervalo, de execução do job (por exemplo, "a cada três horas"). Você pode usar aqui qualquer string compatível com o formato crontab. Os desenvolvedores também podem usar a sintaxe de cron do App Engine se estiverem familiarizados com o antigo cron do App Engine.

    Para mais informações, consulte Como configurar programações de jobs.

  3. Especifique o nome do tópico em que o job será publicado.

  4. Especifique a mensagem para enviar ao tópico. Ela será enviada como o parâmetro data na mensagem do Pub/Sub. Veja um exemplo no guia de início rápido.

  5. Estão disponíveis outros parâmetros opcionais, como fuso horário, atributos etc. Veja a descrição de cada um deles na referência da linha de comando gcloud.

A configuração de destino Pub/Sub não inclui opções para a definição de novas tentativas porque o Pub/Sub tem seu próprio mecanismo e a própria política de repetição.

Exemplo de linha de comando:

    gcloud beta scheduler jobs create pubsub myjob --schedule "0 */3 * * *" --topic cron-topic --message-body "Hello"

Destino do App Engine

O destino App Engine HTTP está disponível apenas para o aplicativo do Google App Engine associado ao projeto atual. Para usar um aplicativo do Google App Engine fora do projeto atual, escolha HTTP como destino, e não App Engine HTTP.

É possível proteger o elemento handlers dos pontos de extremidade do App Engine usando login: admin no arquivo app.yaml.

Sintaxe

gcloud beta scheduler jobs create app-engine JOB --schedule=SCHEDULE [optional flags]

Para usar o App Engine HTTP target:

  1. Em JOB, especifique o nome do job. Ele precisa ser exclusivo no projeto. Você não pode reutilizar o nome de um job em um projeto mesmo depois de excluir o job com esse nome.

  2. Especifique a programação, também chamada de frequência ou intervalo, de execução do job (por exemplo, "a cada três horas"). Você pode usar aqui qualquer string compatível com o formato crontab. Os desenvolvedores também podem usar a sintaxe de cron do App Engine se estiverem familiarizados com o antigo cron do App Engine.

    Para mais informações, consulte Como configurar programações de jobs.

  3. Especifique o URL relativo do ponto de extremidade do App Engine com que o job entrará em contato. Se você usar o valor padrão /, o job usará PROJECT-ID.appspot.com. PROJECT-ID representa o código do projeto atual.

  4. Especifique o nome do serviço do App Engine que está executando o gerenciador do job do Cloud Scheduler. O serviço default é usado quando essa opção é omitida. Para defini-la, veja os nomes dos serviços no Console do Google Cloud Platform.

  5. Se preferir, defina o método HTTP que você quer usar ao executar o job. O padrão é POST.

  6. Você também pode especificar a versão. Se ela não for definida, será usada a versão disponibilizada no momento. Consulte as versões disponíveis no Console do Google Cloud Platform.

  7. Também é possível especificar a instância. Se ela não for definida, qualquer instância disponível poderá ser usada. Consulte as versões disponíveis no Console do Google Cloud Platform.

  8. Se você quiser, pode especificar também os dados que serão enviados ao destino. Esses dados são enviados no corpo da solicitação quando os métodos HTTP POST ou PUT forem selecionados.

  9. Você também tem a opção de definir os valores de novas tentativas. Em caso de falha, eles especificam como tentar executar novamente o job do App Engine. Na maioria dos casos, os padrões são suficientes. Para mais informações, consulte a referência da linha de comando da gcloud

  10. Estão disponíveis outros parâmetros opcionais, como fuso horário, descrição etc. Veja a descrição de cada um deles na referência da linha de comando gcloud.

Exemplo de linha de comando:

 gcloud beta scheduler jobs create app-engine my-appengine-job --schedule "0 */3 * * *" --relative-url "/cron-handler"

Destino HTTP

Você pode enviar uma solicitação para qualquer ponto de extremidade HTTP ou HTTPS. Os pontos de extremidade HTTP de destino precisam estar publicamente acessíveis.

Sintaxe

gcloud scheduler jobs create http JOB --schedule=SCHEDULE --uri=URI [optional flags]

Para usar o HTTP target:

  1. Em JOB, especifique o nome do job. Ele precisa ser exclusivo no projeto. Você não pode reutilizar o nome de um job em um projeto mesmo depois de excluir o job com esse nome.

  2. Especifique a programação, também chamada de frequência ou intervalo, de execução do job (por exemplo, "a cada três horas"). Você pode usar aqui qualquer string compatível com o formato crontab. Os desenvolvedores também podem usar a sintaxe de cron do App Engine se estiverem familiarizados com o antigo cron do App Engine.

    Para mais informações, consulte Como configurar programações de jobs.

  3. Especifique o URL completo do ponto de extremidade com que o trabalho entrará em contato.

  4. Se preferir, especifique o método HTTP. O padrão é POST.

  5. Se você quiser, pode especificar também os dados que serão enviados ao destino. Esses dados são enviados no corpo da solicitação quando os métodos HTTP POST ou PUT forem selecionados.

  6. Você também tem a opção de definir os valores de novas tentativas. Em caso de falha, eles especificam como tentar executar novamente o job do App Engine. Na maioria dos casos, os padrões são suficientes. Para mais informações, consulte a referência da linha de comando da gcloud

  7. Estão disponíveis outros parâmetros opcionais, como fuso horário, descrição etc. Veja a descrição de cada um deles na referência da linha de comando gcloud.

Exemplo de linha de comando:

 gcloud beta scheduler jobs create http my-http-job --schedule "0 */3 * * *" --uri "http://myproject/my-url.com" --http-method GET

Como excluir um job

Para excluir um job, siga estas etapas:

Console

  1. Acesse a página do Console do Cloud Scheduler.

    Cloud Scheduler

  2. Selecione o job a ser excluído.

  3. Clique em EXCLUIR JOB.

Gcloud

  1. Abra uma janela de terminal na máquina em que você instalou o SDK do Cloud.

  2. Chame o comando

    gcloud scheduler jobs delete [my-job]
    

    ao substituir [my-job] pelo nome do job a ser excluído.