Можете ли вы программно включить / выключить функции cron без сервера - PullRequest
0 голосов
/ 29 сентября 2018

Сценарий:

  • Я хочу, чтобы функция A запускалась каждую минуту, а не 24/7.Больше похоже на 5-10 часов в неделю.Однако простой хрон, описывающий эти времена, здесь не подходит, потому что 5-10 часов в неделю являются динамическими и постоянно меняются.
  • Функция B будет запускаться, например, каждые 30 минут и определять, должна ли работать функция A или нет,Если это так, он включит его, если нет, он выключит его

Это возможно с помощью Serverless.com (или любого из провайдеров FAAS, которые он использует)?

Заранее спасибо!

1 Ответ

0 голосов
/ 30 сентября 2018

Решение № 1: Используйте s3 для сохранения состояния переключателя

  • Вторая функция может записывать в файл на S3 состояние переключателя (ON или OFF).).

  • Запланируйте выполнение первой функции каждую минуту.Но убедитесь, что он проверяет содержимое «файла переключения» из S3, прежде чем он начнет выполнять свою логику.

Стоимость

Он выиграл 'Это вам дорого обошлось, потому что: 60 раз в час * 24 часов в день * 31 дней в месяц = ​​44,640 звонков / месяц.Если для считывания флага потребуется дополнительно 100ms, а для памяти установлено значение 1GB, это будет равно 44,640 * (0.00001667 GB-SECOND / 10 -100ms в секунду-)= $0.07441488 / месяц.

В дополнение к 44,640 S3 GET-запрос (0.001 на 1,000 запросов) = 44,640 * (0.001 / 1000) = $0.04464/ month.

Решение № 2: Управление кроной func1 из func2

В функции 2 с помощью API AWS CloudWatchEvents вы можете создавать / обновлять выражение ScheduleExpression правила (например, "cron(* * * * * *)"), котороекоторая запускает функцию 1. Подробнее здесь

...