azure-functions - 是否可以随机触发 azure 函数?

标签 azure-functions

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

  • 功能运行
  • 11 分钟延迟
  • 功能运行
  • 延迟 17 分钟
  • 功能运行
  • 延迟 10 分钟
  • 功能运行
  • 延迟 20 分钟
  • 等...

这可能吗?谢谢。

最佳答案

不要修改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
}

.NET

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.1s * 0.25 GB * 1440 minutes/day * 30 days * $0.000016/GB/s = 0.02 USD

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

关于azure-functions - 是否可以随机触发 azure 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51852647/

相关文章:

Azure Functions 筛选器功能正式发布

azure - Azure 计算将事件推送到 Azure EventGrid 时是否很慢?有没有办法更快地获取事件?

azure - 将 Azure Function App 日志输出发送到 Log Analytics

azure - AzureFunctions 中的自定义 TelemetryInitializers

多个应用程序的 Azure Functions 定价

Azure Functions 仅使用 Postman 返回 "401 Unauthorized"

azure-functions - 从 API A、B、C 获取数据并将它们推送到 API X

azure - 在Azure FunctionsStartup的Configure中运行一些启动任务

Azure Function App 在发布后无法运行,但可以在本地通过 VS2017 运行

azure - Azure 函数中的内存缓存