Я хочу сохранить состояние счетчика между касаниями в датчике длительной работы в режиме перепланирования.
Проблема:
Я ожидаю, что файлы будут загружены в путь GCS, но у них нет сигнала об успешном завершении, когда все файлы поступили.В качестве эвристики для определения окончания сеанса загрузки я буду считать данные полными, если прошло n * grace_period
минут без изменения количества файлов с этим префиксом.
Подход:
Я пытаюсь реализовать пользовательский датчик для достижения следующего: - Ткните каждые n
минут, чтобы увидеть, сколько файлов в GCS с определенным префиксом, и сохраните это значение в num_files
.
Успешно, если consecutive_same_pokes > grace_period and num_files > min_files
.
SLA пропустить, если не удастся через n * grace_period + 1
минут.
Продолжать тыкать до deadline
и добиться успеха, если num_files > min_files
.В этом случае deadline
будет через 24 часа после времени запуска, следовательно, для датчика необходим режим переназначения.
Основной вопрос:
Какова лучшая практикахранить состояние для num_files
и consecutive_same_pokes
?
Переменные: Похоже, что мы будем обновлять это состояние слишком часто и только для чтения этого состояния из task_instance
для этого датчика.
XComms: я не уверен, могу ли я использовать XComms для внутризадачной связи, так как она предназначена для межзадачной связи.
Как свойство моего датчика: я не уверен, что мое состояниебудет сохраняться во всех покер, если хранится в MyCustomSensor.num_files
и MyCustomSensor.consecutive_same_pokes
.Приведет ли режим перепланирования к повторной инициализации моей задачи каждый раз, когда стираются счетчики, или он просто перепланирует poke?