以下是关于如何使用Azure Timer的教程:这里和这里(第二个链接中也提到了一些限制)。但是我需要每90秒触发一次(1分钟30秒)。我尝试了以下方法,但好像没有起作用:*/30 */1 * * * * //will trigger every 30 seconds */90 * * * * * //will trigger every 60 seconds 30 * * * * * //will trigger each minute start at second 30 那么我如何每90秒触发它?
您可能需要创建两个具有相同主体但不同计划表达式的函数:0 0/3 * * * * // 00:00 03:00 06:00... 30 1/3 * * * * // 01:30 04:30 07:30... 每个函数将在三分钟内运行一次,在它们之间有90秒的偏移量。将主体提取为辅助函数并从两个函数中调用它可能是有意义的。另一个选项是创建一个每30秒触发一次的单个函数,检查当前时间是否是90秒的适当倍数,否则立即返回。
这是使用 CRON 无法实现的(如 Mikhail 所述)。然而,在组件之间(在本例中为不同的函数)复制逻辑是极其不推荐的。这实际上是函数平行的已知代码坏味道。通常,对于任何领域,这都不是理想的解决方案(我想原因很清楚)。我建议创建一个包含所有逻辑的函数,由其他函数触发,这些函数将保留与实际程序逻辑无关的最小逻辑。 您可以选择最适合您的内容,这可以是通过 HTTP 触发器、队列或其他方式完成。 然后,通过其触发器触发此函数的 2 个(或者事实上任意数量的)函数。例如,您可以创建一个带有 HTTP 触发器的函数,其中包含所有逻辑。 然后,创建 2 个函数,每个函数使用不同的 CRON 表达式触发。两个函数将只是调用 HTTP 调用触发“逻辑”函数。对于您特定的 90 秒需求,您可以使用已经建议了的这些 CRON 表达式(每个“触发器”函数一个)。0 0/3 * * * * 30 1/3 * * * *