Pon en cola ejecuciones de flujos de trabajo con Cloud Tasks

Puedes usar Cloud Tasks para poner en cola un flujo de trabajo y ejecutarlo de forma asíncrona.

Cloud Tasks ofrece los siguientes controles:

  • Programar horas de entrega específicas
  • Administrar las frecuencias de envío
  • Configurar el comportamiento de reintento
  • Acceder y administrar tareas individuales en una cola
  • Habilitar la anulación de duplicación de tareas

Estos controles pueden ser útiles, por ejemplo, para administrar solicitudes que activan una y que podría exceder inesperadamente los límites de Workflows. De configurar una cola de Cloud Tasks con límites de frecuencia y reintentos puede garantizar que todas esas solicitudes den como resultado ejecuciones del flujo de trabajo.

Para obtener más información, consulta Comprende Cloud Tasks.

Ten en cuenta lo siguiente:

  • Debes basar el límite de frecuencia en el límite de Workflows para las solicitudes de escritura de la API de Execution. Si necesario, puedes solicitar un aumento de la mayoría de las cuotas en la consola de Google Cloud. Obtén más información sobre Solicitudes de aumento de cuota

  • Cloud Tasks se diseñó para proporcionar “al menos una vez” entrega; Sin embargo, Workflows no garantiza el procesamiento del tipo “exactamente una vez” de las solicitudes duplicadas de Cloud Tasks.

  • Para quitar los retrasos de ejecución y maximizar la capacidad de procesamiento, habilita de la ejecución en Workflows. Ejecuciones pendientes se ejecutan automáticamente en cuanto esté disponible la cuota de simultaneidad de ejecución. Para más información, consulta Administra el backlogging de ejecución.

Antes de comenzar

  1. Si aún no tienes un flujo de trabajo que quieras poner en cola, crear una.
  2. Enable the Cloud Tasks API.

    Enable the API

Pon en cola una tarea para ejecutar un flujo de trabajo

  1. Crear una cuenta de servicio para que Cloud Tasks pueda hacer solicitudes a la API de Workflows:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Reemplaza SERVICE_ACCOUNT_NAME por un nombre Debe tener entre 6 y 30 caracteres. Puede contener caracteres alfanuméricos en minúscula y guiones. Después de crear una cuenta de servicio, no podrás cambiar su nombre.

  2. Para permitir que la principal ejecute tus tareas de Cloud Tasks comandos la capacidad de actuar como un servicio de Identity and Access Management (IAM) cuenta, Otorgar un rol que permita a la principal actuar en nombre de la cuenta de servicio.

  3. Otorga a tu nueva cuenta de servicio workflows.invoker para que tiene permiso para activar tu flujo de trabajo:

    gcloud projects add-iam-policy-binding PROJECT_NAME \
        --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \
        --role roles/workflows.invoker

    Reemplaza lo siguiente:

    • PROJECT_NAME: El nombre de tu proyecto de Google Cloud.
    • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio que que creaste anteriormente.
  4. Si aún no tienes una cola de Cloud Tasks, crear una.

  5. Crea una tarea que se oriente al extremo HTTP de tu flujo de trabajo mediante el de servicio que creaste anteriormente para autenticar:

    gcloud tasks create-http-task \
        --queue="QUEUE_ID" \
        --url="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
        --body-content="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
        --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"

    Reemplaza lo siguiente:

    • QUEUE_ID: Es el identificador que asignaste a tu Lista de tareas en cola de Cloud Tasks; por ejemplo, my-queue.
    • PROJECT_NAME: Es el nombre de tu cuenta de Google Cloud. en un proyecto final.
    • REGION_NAME: Es la región en la que se encuentra tu flujo de trabajo. como us-central1.
    • WORKFLOW_NAME: Es el nombre del flujo de trabajo que deseas. para crear una tarea.
    • DOUBLE_ESCAPED_JSON_STRING: una codificación JSON de los argumentos que pases. Las comillas dobles dentro del string entre comillas se escapa con barras inversas (\). Por ejemplo: --body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
    • SERVICE_ACCOUNT_NAME: Es el nombre del servicio. cuenta que creaste anteriormente.

    La tarea se crea y se agrega a tu cola de Cloud Tasks. La tarea persiste en la cola hasta que comienza la ejecución del flujo de trabajo devuelve un código de estado HTTP 2xx, a partir del cual Cloud Tasks considera que la tarea está completa.

¿Qué sigue?