Este documento descreve como limitar os tempos de execução de tarefas e executáveis através da definição de limites de tempo. Em alternativa, se quiser que um runnable termine assim que todos os outros runnables na respetiva tarefa terminarem a execução, use um runnable em segundo plano.
Um tempo limite especifica o período durante o qual uma tarefa ou um executável tem permissão para ser executado. O Batch não permite que os trabalhos sejam executados durante mais de 14 dias e não define tempos limite predefinidos para tarefas individuais e executáveis. Consequentemente, uma tarefa ou um executável individual pode ser executado durante um máximo de 14 dias antes da falha automática. No entanto, se as suas tarefas e executáveis não se destinarem a ser executados durante tanto tempo, esta configuração pode causar custos e atrasos inesperados. Para evitar tempos de execução excessivos, pode definir limites de tempo para tarefas e executáveis.
Antes de começar
- Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
-
Para receber as autorizações de que precisa para criar uma tarefa, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Editor de tarefas em lote (
roles/batch.jobsEditor
) no projeto -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço da tarefa, que, por predefinição, é a conta de serviço predefinida do Compute Engine
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
-
Editor de tarefas em lote (
Defina limites de tempo
Pode definir limites de tempo para executáveis, tarefas ou ambos. O limite de tempo para um runnable especifica o tempo de execução máximo para esse runnable. O limite de tempo de uma tarefa especifica o tempo de execução máximo dessa tarefa, que é a soma de todos os tempos de execução individuais dos respetivos executáveis. Por exemplo, se uma tarefa tiver 3 executáveis que são executados ao mesmo tempo durante 1 minuto, o tempo de execução da tarefa é de 3 minutos e não de 1 minuto.
Se definir limites de tempo sobrepostos, como um limite de tempo para um executável e a tarefa do executável, só é necessário exceder um limite de tempo para acionar a falha automática. Por exemplo, suponhamos que define o limite de tempo de uma tarefa para 60 segundos e o limite de tempo de cada um dos executáveis dessa tarefa para 120 segundos. Em seguida, esta tarefa de exemplo e todos os respetivos executáveis falham quando a soma dos tempos de execução dos respetivos executáveis excede 60 segundos, e é impossível acionar os limites de tempo de 120 segundos.
Para escolher o tempo limite adequado a definir para as tarefas e os executáveis da sua tarefa, analise os registos de tarefas semelhantes que executou anteriormente para determinar o tempo de execução típico das tarefas e dos executáveis para cargas de trabalho semelhantes.
Defina um limite de tempo para uma tarefa
Use a CLI Google Cloud ou a API REST para criar uma tarefa que inclua o campo maxRunDuration
no objeto taskSpec
do ficheiro JSON:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Substitua TIMEOUT
pelo número máximo de segundos ou frações que quer permitir que a tarefa seja executada. Por exemplo, 255s
.
Uma tarefa que define um limite de tempo de 255 segundos para uma tarefa teria um ficheiro de configuração JSON semelhante ao seguinte:
{
"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"
}
}
Se o limite de tempo de uma tarefa for excedido, a tarefa falha automaticamente e o limite de tempo excedido é indicado pelo código de saída 50005
nos eventos e registos de estado da tarefa. Para mais informações sobre os tempos limite excedidos, consulte a documentação de resolução de problemas para o código de saída 50005.
Defina o limite de tempo para uma ação executável
Use a CLI Google Cloud ou a API REST para criar uma tarefa que inclua o campo timeout
no objeto runnable
do ficheiro JSON:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Substitua TIMEOUT
pelo número máximo de segundos ou
secções fracionárias durante as quais quer permitir a execução do executável. Por exemplo,
3.5s
.
Uma tarefa que define um limite de tempo de 3,5 segundos para um executável teria um ficheiro de configuração JSON semelhante ao seguinte:
{
"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"
}
}
Se o limite de tempo de um executável for excedido, o executável falha automaticamente e
o limite de tempo excedido é indicado pelo código de saída 50005
nos eventos
de estado e registos da tarefa. Para mais informações sobre os tempos limite excedidos, consulte a documentação de resolução de problemas para o código de saída 50005.
O que se segue?
- Se tiver problemas ao criar ou executar uma tarefa, consulte a secção Resolução de problemas.
- Ver empregos e tarefas.
- Saiba mais sobre as opções de criação de tarefas.
- Saiba como analisar uma tarefa através de registos.