我知道你可以为每月的azure功能增加支出限制,但我需要找到一种方法来限制每天Azure功能的执行次数。我正在开发的功能是调用第三方API,我们每天限制25,000个呼叫。当我们达到该限制时,我们得到响应“LIMIT_REACH”。我希望能够暂停蔚蓝功能执行,直到第二天凌晨12点。我正在使用存储队列来触发Azure功能。我知道function.json中有一个选项。我可以更新[“disabled”:false]但我需要以编程方式设置它。然后我将不得不触发一个进程再次打开该功能。
答案 0 :(得分:1)
当您点击LIMIT_REACH响应时,为什么不在TableStorage中保留标志或“下一个有效执行时间”。每次函数触发时,都会询问该时间并执行或中止。当您能够重新命中第三方API时,更新标志/下一个执行时间。
答案 1 :(得分:0)
不幸的是,目前没有任何以编程方式启用/禁用Azure功能的API。
但是,您可以通过以下几种方式实现这一目标:
首先,在收到LIMIT_REACH
后,让队列函数修改自己的function.json以设置disabled
true - 这将在所有当前正在执行的函数完成后触发重启。
然后,在您希望重新启用处理时,运行其他功能以将disabled
:true
更新为false
:
0 0 0 * * *
)或
答案 2 :(得分:0)
为什么不使用RateLimiter作为限制函数执行的工具?有很多框架可以做到这一点。例如,这是一个:
https://github.com/David-Desmaisons/RateLimiter
我希望它会帮助你!!!