【问题标题】:Azure Function - Cron Trigger - ok every second but not every minuteAzure 函数 - Cron 触发器 - 每秒都可以,但不是每分钟
【发布时间】:2023-03-03 15:40:01
【问题描述】:

我正在尝试在我的 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"
}

【问题讨论】:

  • 您如何确认它不是每分钟都在运行?看起来正确就是我问的原因
  • 是的 - 我已经等了超过 1 分钟。根据上面的链接,代码只是默认示例。当我使用 "*/1 * * * * *" 时,我看到它正在记录
  • 啊,我刚刚在控制台中注意到:The listener for function 'Functions.TriggerWork' was unable to start. [4/17/19 4:09:22 AM] The listener for function 'Functions.TriggerWork' was unable to start. Microsoft.WindowsAzure.Storage: Settings must be of the form "name=value".
  • 看起来您没有配置正确的存储密钥。您是在本地测试还是在门户网站上测试?
  • @GeorgeChen - 抱歉不明白。它在本地运行。

标签: azure cron azure-functions


【解决方案1】:

我可以重现您的问题,local.settings.json 中的{AzureWebJobsStorage} 连接字符串条目的格式不匹配:

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

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

更多详情可以参考这个类似的issue

【讨论】:

  • 对不起,我到底有什么解决办法没有得到你的答案?应该是哪种有效的 AzureWebJobsStorage?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2017-02-12
  • 2018-07-22
  • 1970-01-01
  • 2011-06-20
相关资源
最近更新 更多