【问题标题】:Two Timer Triggers on Azure Function With Params带有参数的 Azure 函数上的两个计时器触发器
【发布时间】:2021-02-16 05:11:47
【问题描述】:

我们有两个计时器触发器 Azure 函数 - 触发器 A 和触发器 B。如果触发器 A 被定义为“第一个”,它会运行而触发器 B 不会。同样,如果先定义触发器 B,它会运行而触发器 A 不会。

这就引出了两个问题:

  1. Azure 函数可以有两个计时器触发器吗?我在文档中找不到任何内容。我发现最接近的是一个 SO 答案,暗示这是不可能的。
  2. 鉴于official docs 中以逗号分隔的 NCRONTAB 表达式由于参数不同而不会在此处剪切,有什么好的解决方案?

我们正试图将计时器触发器更改为 API 触发器,并在计时器上使用冗余函数应用程序调用具有不同参数的端点。

【问题讨论】:

  • 当然你可以在一个函数应用中有两个时间触发器。你是什​​么意思触发器 A 被定义为“第一”?
  • @BowmanZhu 函数应用中的单个函数不能有多个触发器,我知道这是问的问题。
  • 你不能有一个带有两个定时器触发器的函数。您可以有 2 个函数,每个函数都有自己的计时器触发器,并让它们调用共享方法。该共享逻辑可以公开一个布尔标志,表明它正在运行。如果是这样,其他调用者可以跳过调用。如果我理解正确,那将是您想要的情况。
  • 谢谢大家,现在试试。

标签: c# azure triggers ncron


【解决方案1】:

更新:

正如 Peter Bons 所说,“调用共享方法”。

原答案:

Azure 函数可以有两个计时器触发器吗?我什么都找不到 在文档中。我发现的最接近的事情是一个暗示的答案 这是不可能的。

如果你说的是 azure function app,那么它是可能的。

但如果你说的是单个 azure 函数,那么你不能将两个触发器放在一个函数中。

例如,下面的效果很好:

考虑到逗号分隔,什么是解决这个问题的好方法 根据官方文档的 NCRONTAB 表达式并没有在此处删减,因为 到不同的参数?

CRON 表达式不能代表所有用例,因此有时需要在函数应用中将代码分成两个函数。

如果您想要一个“动态”CRON,您可以执行以下操作并更改相关值:

{
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "%test%"
    }
  ]
}

以上是修改portal的值,也可以设置环境变量。该值来自 env var。

【讨论】:

  • 谢谢,有帮助,现在试试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多