暂停Azure功能至第二天上午12点

暂停Azure功能至第二天上午12点,azure,azure-functions,Azure,Azure Functions,我知道你可以增加每月azure函数的开销限制,但我需要找到一种方法来限制每天azure函数的执行次数。我正在开发的功能是调用第三方API,我们每天的调用限制为25000次。当我们达到这个极限时,我们会得到一个响应“limit\u reach”。我希望能够暂停azure函数的执行,直到第二天凌晨12点。我正在使用存储队列触发Azure函数。我知道function.json中有一个选项。我可以更新[“disabled”:false],但我需要通过编程进行设置。然后我必须触发一个进程来再次打开该函数

我知道你可以增加每月azure函数的开销限制,但我需要找到一种方法来限制每天azure函数的执行次数。我正在开发的功能是调用第三方API,我们每天的调用限制为25000次。当我们达到这个极限时,我们会得到一个响应“limit\u reach”。我希望能够暂停azure函数的执行,直到第二天凌晨12点。我正在使用存储队列触发Azure函数。我知道function.json中有一个选项。我可以更新[“disabled”:false],但我需要通过编程进行设置。然后我必须触发一个进程来再次打开该函数

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

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

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

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

然后,在您希望重新启用处理时,运行另一个函数将
禁用的
true
更新为
false

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

  • 使用另一个队列并将设置为消息可见时的计划,在该时间重新启用该功能

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


我希望它能帮助你

这可以工作,但我仍然会为每个函数调用收费。然后,我必须确保队列中的消息在得到处理之前不会过期。您不仅要对每次执行收费,还要对执行中使用的资源数量收费。使用If/Then对表存储进行简单的检查将非常快,并且不会占用太多资源。我将在接下来的几周内尝试此方法,并向您提供更新