【问题标题】:Can you programmatically switch serverless cron functions on/off你能以编程方式打开/关闭无服务器 cron 功能吗
【发布时间】:2018-09-30 06:51:33
【问题描述】:

场景:

  • 我希望函数 A 每分钟运行一次,但不是 24/7。更像是每周 5-10 小时。但是,在这里用简单的 cron 列出这些时间是行不通的,因为每周 5-10 小时是动态的并且会不断变化。
  • 函数 B 将运行,例如每 30 分钟一次,并确定函数 A 是否应该运行。如果是,它会将其“打开”,如果不是,它将将其“关闭”

使用 Serverless.com(或它使用的任何 FAAS 提供商)是否可行?

提前致谢!

【问题讨论】:

    标签: cron serverless-framework serverless


    【解决方案1】:

    解决方案 #1:使用 s3 保存开关状态

    • 您可以让第二个函数将开关的状态(ONOFF)写入 S3 上的文件。

    • 安排第一个函数每分钟运行一次。但请确保它在开始执行其逻辑之前检查来自 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 / 月。

    解决方案#2:从 func2 控制 func1 的 cron

    在函数 2 中,您可以使用 AWS CloudWatchEvents API 创建/更新触发函数 1 的规则的 ScheduleExpression(例如 "cron(* * * * * *)")。阅读更多 here

    【讨论】:

    • 嗯 - 我最终做了类似于你建议的事情。我想,虽然这可以作为一种解决方法,但现在这个问题的答案是否定的?
    • 如果您可以编辑您的答案以说我可以将其标记为已接受的答案(如果并且直到出现“是”...
    • @hemal 发送解决方案会打开/关闭 Lambda 函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多