Definir o limite de tempo do pedido

Saiba como definir o tempo dentro do qual uma resposta a um pedido tem de ser devolvida pelos seus serviços de publicação do Knative. Se não for devolvida uma resposta no prazo especificado, o pedido termina e é devolvido o erro 504.

Limites de tempo limite

O limite de tempo limite máximo difere consoante a versão do seu cluster do GKE.

Versão do GKE Limite predefinido Limite máximo de tempo limite
0.16.0-gke.1 e posterior 300 segundos 24 horas
0.15.0-gke.3 e anteriores 300 segundos 900 segundos

Além de alterar o limite de tempo da solicitação de publicação do Knative, deve verificar a sua framework de linguagem para ver se tem a sua própria definição de limite de tempo da solicitação que também tem de atualizar.

Definir e atualizar o limite de tempo do pedido

Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.

Pode definir o limite de tempo da solicitação através da Google Cloud consola, da CLI Google Cloud ou de um ficheiro YAML quando implementa um novo serviço ou atualiza um serviço existente e implementa uma revisão:

Consola

  1. Aceda ao Knative serving na Google Cloud consola:

    Aceda ao Knative serving

  2. Clique em Criar serviço se estiver a configurar um novo serviço para o qual está a implementar. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.

  3. Em Definições avançadas, clique em Contentor.

  4. No campo Tempo limite do pedido, introduza o valor de tempo limite que quer usar. O valor especificado tem de ser inferior ao limite de tempo limite para a versão do GKE do cluster.

  5. Clique em Seguinte para continuar para a secção seguinte.

  6. Na secção Configure como este serviço é acionado, selecione a conetividade que quer usar para invocar o serviço.

  7. Clique em Criar para implementar a imagem no Knative Serving e aguarde que a implementação termine.

Linha de comandos

  • Para serviços existentes, defina o limite de tempo do pedido executando o comando gcloud run services update com o parâmetro --timeout:

    gcloud run services update SERVICE --timeout TIMEOUT

    Substituição:

    • SERVICE com o nome do seu serviço.
    • TIMEOUT com o tempo pretendido, usando um valor inteiro em segundos ou um valor de duração absoluta, por exemplo, 1m20s, que corresponde a 1 minuto e 20 segundos. O valor que especificar tem de ser inferior ao limite de tempo limite para a versão do GKE do cluster. Especifique 0 para definir o limite de tempo para o valor predefinido.
  • Para novos serviços, defina o limite de tempo do pedido executando o comando gcloud run deploy com o parâmetro --timeout:

    gcloud run deploy SERVICE --image=IMAGE_URL --timeout TIMEOUT

    Substituição:

    • SERVICE com o nome do seu serviço.
    • IMAGE_URL com uma referência à imagem do contentor, por exemplo, gcr.io/cloudrun/hello.
    • TIMEOUT com o tempo pretendido, usando um valor inteiro em segundos ou um valor de duração absoluta, por exemplo, 1m20s, que corresponde a 1 minuto e 20 segundos. O valor que especificar tem de ser inferior ao limite de tempo limite para a versão do GKE do cluster. Especifique 0 para definir o limite de tempo para o valor predefinido.

YAML

Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe usando a flag --format=export. Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace. Tem de garantir que modifica apenas os atributos especificados.

  1. Transfira a configuração do seu serviço para um ficheiro denominado service.yaml no espaço de trabalho local:

    gcloud run services describe SERVICE --format export > service.yaml

    Substitua SERVICE pelo nome do seu serviço de fornecimento do Knative.

  2. No ficheiro local, atualize o atributo timeoutSeconds:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: TIMEOUT

    Substituição:

    • SERVICE com o nome do seu serviço Knative serving
    • IMAGE_URL com uma referência à imagem do contentor, por exemplo, gcr.io/cloudrun/hello.
    • TIMEOUT com o limite de tempo desejado, em segundos.
  3. Substitua o serviço pela respetiva nova configuração através do seguinte comando:

    gcloud run services replace service.yaml