azure-functions - 是否可以按随机时间表触发 azure 功能?
问题描述
我正在创建一个 Azure 函数,并希望它在每次运行之间随机延迟运行。我希望从 10 到 20 分钟的间隔中随机选择每次运行之间的延迟。例如,我想要:
- 函数运行
- 延迟 11 分钟
- 函数运行
- 17 分钟延迟
- 函数运行
- 10 分钟延迟
- 函数运行
- 20 分钟延迟
- ETC ...
这可能吗?谢谢。
解决方案
请勿修改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 美元
实际上,您甚至可能最终省钱,因为如果您的功能应用程序每分钟运行一次,它就不会进入睡眠模式,这意味着该功能将花费更少的时间来启动。
推荐阅读
- javascript - GET net::ERR_ABORTED 404(未找到)
- laravel - 关于通过 CRON 运行日常脚本与在 Web MVC 框架内运行日常脚本的一般问题,例如 Laravel
- c# - Xamarin.iOS 无法解析来自被引用方法的引用 (Microsoft.AspCore.Http.Features)
- laravel - Laravel Firestore 页面加载没有数据
- regression - SUR 中的聚集标准错误 - Stata 中的sureg 或 gsem
- javascript - discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义错误的属性“通道”
- android - 从 shouldOverrideUrlLoading 重定向后,Android Webview 活动在从自定义选项卡返回时崩溃
- filter - Doctrine - 使用计算属性过滤
- python - 如何检查python中的字符串是否包含来自另一个字符串的随机字符集
- reactjs - 使用 React-uploady 组件引用文件名和内容的问题