Azure功能计时器运行两次,当我登录Azure门户时

问题描述 投票:2回答:2

我在Azure中有一个定时功能应用程序,计划每天22:00运行。但是,它似乎每天都在21:59和22:00运行。当我登录Azure门户检查日志时,它似乎也随机运行。

这是我得到的重复条目的时间戳示例:

enter image description here

我在网上搜索过但发现没有可行的解决方案。

这是应用程序的签名,需要大约20秒才能完成:

[FunctionName("Function1")]
public static void Run([TimerTrigger("0 0 22 * * *", RunOnStartup = false)]TimerInfo myTimer, TraceWriter log)
{
   // My code
}

这是我的local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX",
    "AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX",
    "type": "timerTrigger",
    "schedule": "0 0 22 * * *",
    "useMonitor": false,
    "SQLConn": "Server=tcp:XXX.database.windows.net,1433;Initial Catalog=XXX;Persist Security Info=False;User ID=XXX;Password=XXX;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
  },
  "disabled": false
}

谁能帮我吗?

此外,Azure功能中的“监视器”部分显示没有异常。

.net azure azure-functions crontrigger
2个回答
3
投票

我看了一下我们的功能应用程序的内部日志(感谢分享名称!),我看到以下内容:

2018-03-02 14:43:50.4977179: Function 'DemoAzureFunction.Function1.Run' is configured to run on startup. Executing now.
2018-03-02 14:44:01.7856855: Function 'DemoAzureFunction.Function1.Run' updated status: Last='2018-03-02T14:43:48.6103583+00:00', Next='2018-03-02T22:00:00.0000000+00:00', LastUpdated='3/2/2018 2:43:48 PM'

所以在我看来,你的功能配置中有一个RunOnStartup = true。以这种方式配置时,访问门户网站可以触发计时器立即运行(与配置的计划分开),因为门户网站交互将唤醒您的功能应用程序。


2
投票

这是我得到的重复条目的时间戳示例:

根据你的截图,我想结果属于azure函数中的启动和完成状态函数日志。这些状态日志由系统自动创建。

我已经测试了TimeTrigger。当TimeTrigger每次运行时,总会有两个(已启动,已完成)状态的功能日志。它们的日志被打包在一起并几乎同时输出。如果计划很长,则不同状态日志之间的时间戳将是延迟。如果计划很短(每4秒),则不同状态之间的时间戳始终相同。您还可以在此article中看到两个状态函数日志。

两个状态功能日志(已启动,已完成):

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.