首页 > 解决方案 > Azure 函数 - Cron 触发器 - 每秒都可以,但不是每分钟

问题描述

我正在尝试在我的 Azure Function 计时器触发器中为每一分钟创建一个 CRON。

根据我发现的文档:https ://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer#cron-examples

"0 */1 * * * *"根本不运行。

"*/1 * * * * *"确实每秒运行一次。

我哪里错了?

function.json看起来像这样:

{
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 */1 * * * *"
    }
  ],
  "scriptFile": "../dist/TriggerWork/index.js"
}

标签: azurecronazure-functions

解决方案


我可以重现您的{AzureWebJobsStorage}连接字符串条目的问题local.settings.json,它的格式以某种方式不匹配: 在此处输入图像描述

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "{AzureWebJobsStorage}",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}

对于除 HTTP 之外的所有触发器,需要有效的 AzureWebJobsStorage 连接字符串。这背后的原因与横向扩展至多个 VM 有关:如果函数横向扩展至多个 VM 并具有多个实例,则需要一个存储帐户进行协调,以确保一次仅运行一个计时器触发器实例。如果您尝试在本地开发,这会带来一些困难,但不幸的是,这目前是计时器触发器的限制。

有关更多详细信息,您可以参考这个类似的问题


推荐阅读