首页 > 解决方案 > 是否可以按随机时间表触发 azure 功能?

问题描述

我正在创建一个 Azure 函数,并希望它在每次运行之间随机延迟运行。我希望从 10 到 20 分钟的间隔中随机选择每次运行之间的延迟。例如,我想要:

这可能吗?谢谢。

标签: azure-functions

解决方案


请勿修改functions.json

不要functions.json按照建议修改。它会重新启动您的整个函数应用程序,在我的情况下(使用 Node.js)也意味着我需要为读取/写入文件node_modules夹中的数万个文件而收取少量但可观的费用。

解决方案

您最好的选择是每分钟运行一次该功能,但大多数情况下立即退出。这是一个例子。我假设我们希望随机运行该函数,但平均而言,我们希望每 15 分钟运行一次该函数。

节点.js

// On average, run the function every N minutes:
const AVERAGE_RUN_EVERY=15;

if (Math.random() > 1 / AVERAGE_RUN_EVERY) {
  // Most of the time, we will exit here:
  context.done();
} else {
  // Your actual code here
}

。网

int AVERAGE_RUN_EVERY = 15;
Random rnd = new Random();
if (rnd.Next(0, AVERAGE_RUN_EVERY) == 0) {
  // Your actual code here
}

随机运行的额外费用

假设每次执行的最低费用为 100 毫秒,并且您的应用程序使用的内存为 256 MB 或更少,那么您每个月都会被收取费用:

0.1 秒 * 0.25 GB * 1440 分钟/天 * 30 天 * 0.000016 美元/GB/秒 = 0.02 美元

实际上,您甚至可能最终省钱,因为如果您的功能应用程序每分钟运行一次,它就不会进入睡眠模式,这意味着该功能将花费更少的时间来启动。


推荐阅读