Migrar filas push para o Cloud Tasks fazendo upgrade para o SDK mais recente (Python)

Antes de fazer upgrade para a versão mais recente do SDK de serviços do App Engine, consulte a visão geral da migração.

É possível migrar para o Cloud Tasks automaticamente atualizando o SDK de serviços do App Engine para a versão mais recente. Depois do upgrade, o SDK redireciona automaticamente as chamadas PushQueue para as APIs de front-end do Cloud Tasks. O Cloud Tasks mantém as filas e tarefas atuais, então nenhuma migração adicional é necessária.

Nos bastidores, o SDK atualizado usa as APIs do Cloud Tasks para manter a paridade de recursos com as filas de tarefas. O SDK oferece suporte a:

  • Criação de tarefas em lote: o SDK usa APIs em lote para oferecer suporte à adição de até 100 tarefas em uma única chamada.
  • Novas tentativas no nível da tarefa: o SDK oferece suporte a configurações de novas tentativas específicas da tarefa.
  • Tarefas transacionais: o SDK enfileira tarefas em transações do Datastore. Para manter a confiabilidade, crie ou modifique o arquivo cron.yaml.

Preços e cotas

Migrar suas filas push para o Cloud Tasks pode afetar os preços e as cotas do seu aplicativo.

Preços

Consulte os preços do Cloud Tasks para estimar o custo mensal antes da migração.

Assim como nas filas de tarefas, o envio de solicitações para o aplicativo do App Engine com um destino push do Cloud Tasks é sem custo financeiro. No entanto, ao contrário das filas de tarefas, o Cloud Tasks cobra pela operação realizada, como criar, excluir ou gerenciar tarefas. Isso pode levar a um custo mensal geral mais alto em comparação com a fila de tarefas complementar do App Engine.

Cotas

As solicitações do Cloud Tasks também são contabilizadas nas cotas de solicitações do App Engine.

Assim como as filas de tarefas, o Cloud Tasks tem cotas específicas do serviço. A migração para o Cloud Tasks provavelmente vai mudar suas cotas.

Antes de começar

As seções a seguir discutem as considerações de custo e cota antes de migrar as filas push para o Cloud Tasks.

  1. Verifique se você tem acesso ao código-fonte do App Engine.

  2. Ative as APIs Cloud Tasks e Cloud Scheduler:

    Ativar APIs

  3. Para garantir que a conta de serviço do App Engine tenha as permissões necessárias para permitir que o SDK envie tarefas para a API Cloud Tasks, peça ao administrador para conceder o papel do IAM de Enfileirador do Cloud Tasks (roles/cloudtasks.enqueuer) no projeto.

Atualizar o SDK de serviços do App Engine

  1. Verifique se o aplicativo usa a versão mais recente do SDK de serviços do App Engine.

    Atualize a dependência google-appengine-api para a versão v3.1.0b0 ou mais recente. Exemplo:

    Flask==3.0.0
    appengine-python-standard>=v3.1.0b0
    google-cloud-tasks
  2. Ativar o roteamento do Cloud Tasks

    runtime: 3.14
    service: my-service-b
    
    env_variables:
      APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"
    
  3. Implante o aplicativo:

    gcloud app deploy
    
  4. Verifique as filas push no Cloud Tasks para confirmar se o aplicativo está usando o Cloud Tasks.

Configurar tarefas transacionais (opcional)

Se o aplicativo enfileirar tarefas em transações do Datastore, o SDK vai depender de um cron job interno para garantir que as tarefas que não forem enfileiradas durante o commit do Datastore sejam processadas.

Para processar tarefas transacionais da fila push, crie ou atualize o arquivo cron.yaml para chamar o processador interno periodicamente. Exemplo:

cron:
- description: "Process push queue transactional tasks"
  url: /_ah/cloudtask/sweep
  schedule: every 30 minutes # Change this based on the usage pattern

A seguir