En esta página, se describe cómo retrasar la ejecución de un trabajo. La ejecución retrasada te permite diferir tareas no urgentes hasta una duración máxima de 12 horas. Cuando usas esta función, tu trabajo se aprovisiona durante un período de uso bajo, a cambio de un precio más bajo. Consulta la página de precios para obtener más detalles.
En particular, haz lo siguiente:
- El aprovisionamiento de una ejecución de trabajo retrasada puede tardar hasta 12 horas, y la duración total del tiempo de ejecución de todas las tareas en una ejecución de trabajo retrasada es de 12 horas. En combinación, estos requisitos garantizan que una ejecución retrasada se completará en un plazo de 24 horas.
- Dado lo anterior, el límite de tiempo de espera de la tarea para un trabajo retrasado es de 12 horas.
- Cuando la ejecución de un trabajo retrasado alcanza el límite de duración máxima, el sistema la cancela.
Trabajos regulares en comparación con trabajos retrasados
Cada trabajo de Cloud Run se crea como un trabajo regular o un trabajo retrasado.
Independientemente de cómo se creó el trabajo, puedes ejecutarlo como el otro tipo. Para obtener más detalles, consulta lo siguiente:
- Ejecuta un trabajo regular como un trabajo retrasado
- Ejecuta un trabajo retrasado como un trabajo regular
Precios
Para obtener más información sobre los precios de los trabajos retrasados de Cloud Run, consulta Precios de Cloud Run.
Roles obligatorios
Para obtener los permisos que necesitas para crear los trabajos de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Desarrollador de Cloud Run (
roles/run.developer) en el trabajo de Cloud Run - Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser) en la identidad del servicio - Lector de Artifact Registry (
roles/artifactregistry.reader) en el repositorio de Artifact Registry de las imágenes de contenedor del trabajo
Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu trabajo de Cloud Run interactúa con Google Cloud las APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta permisos de implementación y administra el acceso.
Crea un trabajo retrasado
De forma predeterminada, cuando creas y ejecutas un trabajo nuevo, la ejecución comienza lo antes posible.
Con la función de trabajos retrasados, puedes crear un trabajo que tenga una ejecución retrasada integrada desde el punto de creación:
Console
En la Google Cloud consola, ve a la página Cloud Run:
Selecciona Trabajos en el menú de navegación de Cloud Run y haz clic en Implementar contenedor para mostrar el formulario Crear trabajo.
Completa los campos del formulario Crear trabajo, como se describe en Crea trabajos.
Selecciona Retrasar ejecución para diferir la ejecución hasta 12 horas.
gcloud
Crea el trabajo con la marca --delay-execution:
gcloud beta run jobs create JOB_NAME \ --image IMAGE_URL \ --delay-execution \ --region=REGION
Si creaste tu trabajo como un trabajo retrasado, no necesitas incluir la marca --delay-execution para ejecutarlo:
gcloud beta run jobs execute JOB_NAME \ --region=REGION
YAML
Actualiza tu job.yaml con el atributo delayExecution establecido en true:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: delayExecution: "true"
Ejecuta un trabajo regular como un trabajo retrasado
Para ejecutar un trabajo regular como un trabajo retrasado, haz lo siguiente:
Console
En la Google Cloud consola, ve a la página Cloud Run:
Haz clic en el nombre del trabajo que deseas editar.
Haz clic en Ver y editar la configuración del trabajo.
Selecciona Ejecución retrasada.
Haz clic en Actualizar.
gcloud
Ejecuta el siguiente comando:
gcloud beta run jobs execute JOB_NAME \ --async \ --delay-execution \ --region=REGION
YAML
Actualiza tu job.yaml con el atributo delayExecution establecido en true:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: delayExecution: "true"
Ejecuta un trabajo retrasado como un trabajo regular
Cuando inhabilitas la ejecución retrasada, el trabajo se actualiza para que sea un trabajo regular. Esto significa que la próxima vez que ejecutes este trabajo, se ejecutará lo antes posible.
Para inhabilitar la ejecución retrasada, haz lo siguiente:
Console
En la Google Cloud consola, ve a la página Cloud Run:
Haz clic en el nombre del trabajo que deseas editar.
Haz clic en Ver y editar la configuración del trabajo.
Anula la selección de Ejecución retrasada.
Haz clic en Actualizar.
gcloud
Usa la marca --no-delay-execution. También puedes usar esta marca con los comandos update. Si usas esta marca para un trabajo regular, se actualiza el trabajo para inhabilitar la ejecución retrasada.
gcloud beta run jobs update JOB_NAME \ --image IMAGE_URL \ --no-delay-execution \ --region=REGION
YAML
Actualiza tu job.yaml con el atributo delayExecution establecido en false:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: delayExecution: "false"
Ejecuta un trabajo retrasado cuando se crea o actualiza
Cuando creas un trabajo retrasado con la marca --execute-now, se activará
la ejecución en la creación y el trabajo se ejecutará en algún momento en las próximas 12 horas.
Para ejecutar un trabajo retrasado cuando se crea o actualiza, haz lo siguiente:
Console
En la Google Cloud consola, ve a la página Trabajos de Cloud Run:
Si tienes un trabajo retrasado existente, haz clic en el trabajo para mostrar la página de detalles del trabajo y, luego, selecciona Ver y editar la configuración del trabajo. Si creas un trabajo retrasado nuevo, selecciona Implementar contenedor.
Ve a la parte inferior de la página y marca la casilla Ejecutar trabajo de inmediato antes de crear o actualizar el trabajo.
gcloud
Especifica la --execute-now
marca cuando crees o actualices un trabajo retrasado:
Crea un trabajo:
gcloud run jobs create JOB_NAME \ --image IMAGE_URL \ --delay-execution \ --execute-now \ --region=REGION
Actualiza un trabajo:
gcloud run jobs update JOB_NAME \ --execute-now \ --region=REGION