暂停Azure功能直到第二天凌晨12点

时间:2017-03-31 20:01:18

标签: azure azure-functions

我知道你可以为每月的azure功能增加支出限制,但我需要找到一种方法来限制每天Azure功能的执行次数。我正在开发的功能是调用第三方API,我们每天限制25,000个呼叫。当我们达到该限制时,我们得到响应“LIMIT_REACH”。我希望能够暂停蔚蓝功能执行,直到第二天凌晨12点。我正在使用存储队列来触发Azure功能。我知道function.json中有一个选项。我可以更新[“disabled”:false]但我需要以编程方式设置它。然后我将不得不触发一个进程再次打开该功能。

3 个答案:

答案 0 :(得分:1)

当您点击LIMIT_REACH响应时,为什么不在TableStorage中保留标志或“下一个有效执行时间”。每次函数触发时,都会询问该时间并执行或中止。当您能够重新命中第三方API时,更新标志/下一个执行时间。

答案 1 :(得分:0)

不幸的是,目前没有任何以编程方式启用/禁用Azure功能的API。

但是,您可以通过以下几种方式实现这一目标:

首先,在收到LIMIT_REACH后,让队列函数修改自己的function.json以设置disabled true - 这将在所有当前正在执行的函数完成后触发重启。

然后,在您希望重新启用处理时,运行其他功能以将disabledtrue更新为false

  • 使用计时器触发器,并在每天午夜(0 0 0 * * *
  • 运行计划

  • 使用另一个队列并设置visibility time以便在消息可见时安排,然后重新启用该功能。

答案 2 :(得分:0)

为什么不使用RateLimiter作为限制函数执行的工具?有很多框架可以做到这一点。例如,这是一个:

https://github.com/David-Desmaisons/RateLimiter

我希望它会帮助你!!!