Как определить повторную попытку облачной функции Google? - PullRequest
1 голос
/ 20 февраля 2020

Мы хотим развернуть облачную функцию с повторными попытками:

gcloud function deploy somefunc --retry

Мы хотим определить функции, которые повторяются:

if execution_is_a_retry = True:
    ...

Как мы можем определить, что функция повторяется?

Есть ли какой-либо параметр в данных контекста / события? В идеале мы бы также видели количество повторных попыток.

Я знаю, что execution_id остается неизменным между исходным и повторным запусками, но единственный способ проверить это будет, если функция запишет оригинальный идентификатор где-то. В этом случае вполне возможно, что функция может завершиться сбоем, прежде чем успешно записать ее execution_id, и тогда последующие попытки не будут определены как таковые.

1 Ответ

5 голосов
/ 21 февраля 2020

Сам повторный вызов не будет идентифицировать себя как повторный. Вам придется определить это самостоятельно, основываясь на собственной записи идентификатора события, переданного в параметре context. Если вы видите один и тот же идентификатор события более одного раза, вы будете знать, что ваша функция была повторена на основании предыдущего сбоя. Вы не будете знать, был ли сбой вызван вашей функцией или чем-то в инфраструктуре Google.

Вы можете получить идентификатор события для фоновой функции, используя context.eventID, как описано в документация .

Если вы включите повторные попытки, вам следует изучить , делающую вашу функцию идемпотентной , чтобы вы не повторили ненужную или безвредную работу, которая ранее выполнялась. Это снова потребует некоторого учета с вашей стороны, чтобы реализовать это правильно.

...