Ошибка Google-Cloud-Scheduler с функцией HTTP-триггера Cloud

Существует функция Http-триггера Cloud, которая успешно выполняется.

Код функции:

введите здесь описание изображения

Ведение журнала с помощью stackdriver:

"Function execution took 301394 ms, finished with status code: 200" 

Теперь я создаю облачный планировщик, чтобы запускать эту облачную функцию каждый день в 04:00.

Планировщик-ведение журнала с помощью stackdriver:

{
 httpRequest: {…}  
  insertId: "..."  
  jsonPayload: {
   @type: "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"   
   jobName: "......"   
   status: "UNKNOWN"   
   targetType: "HTTP"   
   url: "https://...."   
  }
  logName: "...."  
  receiveTimestamp: "2020-03-02T06:20:36.391816880Z"  
  resource: {…}  
  severity: "ERROR"  
  timestamp: "2020-03-02T06:20:36.391816880Z"  
 }

person EEEEH    schedule 02.03.2020    source источник
comment
Как ваша функция? ему нужны какие-то параметры? Покажи нам код   -  person ajorquera    schedule 02.03.2020
comment
@ajorquera Моей функции не нужны параметры. Просто используйте метод GET   -  person EEEEH    schedule 03.03.2020
comment
Похоже, выполнение вашего CF требует много времени. Конечно, вы продлили срок подачи CF, но я считаю, что CS перестает ждать ответа. Возможно, вы могли бы попробовать использовать Pub / Sub, чтобы запустить процесс, не дожидаясь ответа. См. документацию.   -  person Ajordat    schedule 03.03.2020


Ответы (2)


Мне удалось воспроизвести вашу проблему, и я подумал, что облачный планировщик не ждет ответа от облачной функции. Если у вас есть CF, выполнение которого занимает не более 9 минут, даже если вы продлите крайний срок до 9 минут, это только на стороне CF, и CS перестанет ждать, оставив статус запроса как UNKNOWN (следовательно, FAILED).

Если вы создаете CS из sdk, вам следует взглянуть на параметр - крайний срок попытки, который позволит CS ждать дольше.

Если вам не нужно видеть ответ от CS, вы можете попробовать использовать Pub / Sub, чтобы начать процесс без ожидания.

person Ajordat    schedule 03.03.2020

Что мы обнаружили и подтвердили службой поддержки Google: 1. Задание, созданное с помощью GCP Cloud Console, работает только в течение 60 секунд и возвращает FAILED, даже если для облачной функции установлено максимальное значение 540 секунд. Обратите внимание, CF будет успешно выполнен. 2. Чтобы решить эту проблему, создайте задание через командную строку с помощью команды gcloud SDK: https://cloud.google.com/sdk/gcloud/reference/scheduler/jobs/create/http

Он вернул УСПЕХ, когда мы установили --attempt-deadline = 1200 с, что превышает время выполнения CF 540 с.

Надеюсь это поможет

person Rakesh Gupta    schedule 20.04.2020