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 un flujo de trabajo y que podrían superar de forma inesperada los límites de Workflows. Si configuras una cola de Cloud Tasks con límites de frecuencia y reintentos, puedes garantizar que todas esas solicitudes generen ejecuciones de flujo de trabajo.
Para obtener más información, consulta Información sobre 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 es necesario, puedes solicitar un ajuste de la mayoría de las cuotas en la consola de Google Cloud . Obtén más información sobre los ajustes de cuota.
Cloud Tasks está diseñado para proporcionar una entrega "al menos una vez"; sin embargo, Workflows no garantiza el procesamiento exactamente una vez de las solicitudes duplicadas de Cloud Tasks.
Puedes quitar los retrasos en la ejecución y maximizar la capacidad de procesamiento si habilitas el registro de tareas pendientes de ejecución en Workflows. Las ejecuciones pendientes se ejecutan automáticamente en cuanto está disponible la cuota de simultaneidad de ejecución. Para obtener más información, consulta Administra el backlog de ejecución.
Antes de comenzar
- Si aún no tienes un flujo de trabajo que quieras poner en cola, crea uno.
-
Enable the Cloud Tasks API.
Pone en cola una tarea para ejecutar un flujo de trabajo
Crea una cuenta de servicio para que Cloud Tasks pueda realizar solicitudes a la API de Workflows:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Reemplaza
SERVICE_ACCOUNT_NAME
por un nombre que tenga entre 6 y 30 caracteres. Puede contener guiones y caracteres alfanuméricos en minúscula. Después de crear una cuenta de servicio, no podrás cambiar su nombre.Para permitir que la principal que ejecutará tus comandos de Cloud Tasks actúe como una cuenta de servicio de Identity and Access Management (IAM), otorga un rol que permita que la principal suplante la identidad de la cuenta de servicio.
Otorga a tu cuenta de servicio nueva el rol de workflows.invoker para que tenga 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
: Es el nombre de tu proyecto de Google Cloud .SERVICE_ACCOUNT_NAME
: Es el nombre de la cuenta de servicio que creaste anteriormente.
Si aún no tienes una cola de Cloud Tasks, crea una.
Crea una tarea que tenga como destino el extremo HTTP de tu flujo de trabajo con la cuenta de servicio que creaste anteriormente para la autenticación:
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 fila de Cloud Tasks, por ejemplo,my-queue
.PROJECT_NAME
: Es el nombre de tu proyecto Google Cloud.REGION_NAME
: Es la región en la que se encuentra tu flujo de trabajo, comous-central1
.WORKFLOW_NAME
: Es el nombre del flujo de trabajo para el que deseas crear una tarea.DOUBLE_ESCAPED_JSON_STRING
: Es una codificación JSON de los argumentos que pasas. Las comillas dobles dentro de la cadena entre comillas se escapan con barras inversas (\). Por ejemplo:--body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
SERVICE_ACCOUNT_NAME
: Es el nombre de la cuenta de servicio que creaste anteriormente.
Se creará tu tarea y se agregará a la cola de Cloud Tasks. La tarea persiste en la cola hasta que se inicia la ejecución del flujo de trabajo y devuelve un código de estado HTTP
2xx
, momento en el que Cloud Tasks considera que la tarea se completó.
¿Qué sigue?
- Instructivo: Usa una fila de Cloud Tasks para almacenar en búfer las ejecuciones de tu flujo de trabajo
- Administra las colas y las tareas
- Administra el registro de tareas pendientes de ejecución
- Cómo pasar argumentos del entorno de ejecución en una solicitud de ejecución