En este documento, se describe cómo limitar los tiempos de ejecución de tareas y objetos ejecutables configurando tiempos de espera. De manera alternativa, si deseas que un ejecutable finalice tan pronto como todos los demás ejecutables de su tarea hayan terminado de ejecutarse, usa un ejecutable en segundo plano.
Un tiempo de espera especifica la cantidad de tiempo que se permite que se ejecute una tarea o un elemento ejecutable. Batch no permite que los trabajos se ejecuten durante más de 14 días ni establece tiempos de espera predeterminados para las tareas individuales y los ejecutables. Por lo tanto, una tarea o un ejecutable individual puede ejecutarse durante un máximo de 14 días antes de fallar automáticamente. Sin embargo, si tus tareas y objetos ejecutables no están diseñados para ejecutarse durante tanto tiempo, esta configuración podría generar costos y demoras inesperados. Para evitar tiempos de ejecución excesivos, puedes establecer tiempos de espera para las tareas y los objetos ejecutables.
Antes de comenzar
- Si nunca usaste Batch, revisa Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que, de forma predeterminada, es la cuenta de servicio predeterminada de Compute Engine
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Editor de trabajos por lotes (
Establece tiempos de espera
Puedes establecer tiempos de espera para los ejecutables, las tareas o ambos. El tiempo de espera de un ejecutable especifica el tiempo máximo de ejecución de ese ejecutable. El tiempo de espera de una tarea especifica el tiempo de ejecución máximo para esa tarea, que es la suma de todos los tiempos de ejecución individuales de sus ejecutables. Por ejemplo, si una tarea tiene 3 elementos ejecutables que se ejecutan al mismo tiempo durante 1 minuto, el tiempo de ejecución de la tarea es de 3 minutos, no de 1 minuto.
Si estableces tiempos de espera superpuestos, como un tiempo de espera para un elemento ejecutable y la tarea del elemento ejecutable, solo se debe superar un tiempo de espera para activar la falla automática. Por ejemplo, supongamos que estableces el tiempo de espera de una tarea en 60 segundos y el tiempo de espera de cada uno de los elementos ejecutables de esa tarea en 120 segundos. Luego, esta tarea de ejemplo y todos sus ejecutables fallan cuando la suma de los tiempos de ejecución de sus ejecutables supera los 60 segundos, y es imposible activar los tiempos de espera de 120 segundos.
Para elegir el tiempo de espera adecuado para establecer las tareas y los ejecutables de tu trabajo, analiza los registros de trabajos similares que hayas ejecutado anteriormente para determinar el tiempo de ejecución típico de las tareas y los ejecutables para cargas de trabajo similares.
Cómo establecer un tiempo de espera para una tarea
Usa Google Cloud CLI o la API de REST para crear un trabajo que incluya el campo maxRunDuration
en el objeto taskSpec
del archivo JSON:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Reemplaza TIMEOUT
por la cantidad máxima de segundos o secciones fraccionarias durante las que deseas permitir que se ejecute la tarea. Por ejemplo, 255s
Un trabajo que establece un tiempo de espera de 255 segundos para una tarea tendría un archivo de configuración JSON similar al siguiente:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"maxRunDuration": "255s"
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Si se supera el tiempo de espera de una tarea, esta falla automáticamente y el tiempo de espera superado se indica con el código de salida 50005
en los registros y eventos de estado del trabajo. Para obtener más información sobre los tiempos de espera excedidos, consulta la documentación de solución de problemas para el código de salida 50005.
Establece un tiempo de espera para un ejecutable
Usa Google Cloud CLI o la API de REST para crear un trabajo que incluya el campo timeout
en el objeto runnable
del archivo JSON:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Reemplaza TIMEOUT
por la cantidad máxima de segundos o secciones fraccionarias durante las que deseas permitir que se ejecute el elemento ejecutable. Por ejemplo, 3.5s
Un trabajo que establece un tiempo de espera de 3.5 segundos para un ejecutable tendría un archivo de configuración JSON similar al siguiente:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
"timeout": "3.5s"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Si se supera el tiempo de espera de un ejecutable, este falla automáticamente y el tiempo de espera superado se indica con el código de salida 50005
en los registros y los eventos de estado del trabajo. Para obtener más información sobre los tiempos de espera excedidos, consulta la documentación de solución de problemas para el código de salida 50005.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Ver trabajos y tareas
- Obtén más información sobre las opciones de creación de trabajos.
- Obtén más información para analizar un trabajo con registros.