2017-03-31 77 views
1

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

回答

1

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

+0

这可以工作,但我仍然会收取每个函数调用。然后,我必须确保队列中的消息在处理完成之前不会过期 – greektreat

+1

您不仅仅是每次执行都收取费用,而且还要在该执行中使用多少资源。使用If/Then对表格存储进行简单检查将会非常快速,并且不会像资源那样使用太多。 –

0

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

但是,你可以在几个方面实现这一点:

首先,在收到LIMIT_REACH,已经排队功能修改自己的function.json设置disabled真的 - 这一切当前正在执行的功能后,会触发重新启动完。

然后,当时您想重新启用处理,运行不同的功能来更新disabledtruefalse

  • 使用一个定时器触发与调度每日午夜运行(0 0 0 * * *

  • 使用另一个队列,并设置visibility time安排消息何时可见,何时重新启用该功能。
+0

我会在接下来的几周内尝试这个,并给你一个更新 – greektreat