我在Azure中有一个定时功能应用程序,计划每天22:00运行。但是,它似乎每天都在21:59和22:00运行。当我登录Azure门户检查日志时,它似乎也随机运行。
这是我得到的重复条目的时间戳示例:
我在网上搜索过但发现没有可行的解决方案。
这是应用程序的签名,大约需要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功能部分显示没什么异常。
答案 0 :(得分: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
。以这种方式配置时,访问门户网站可以触发计时器立即运行(与配置的计划分开),因为门户网站交互将唤醒您的功能应用程序。
答案 1 :(得分:2)
以下是我得到的重复条目的时间戳示例:
根据您的屏幕截图,我认为结果属于azure功能中的已启动和已完成状态功能日志。这些状态日志由系统自动创建。
我已经测试了TimeTrigger。当TimeTrigger每次运行时,总会有两个(已启动,已完成)状态功能日志。它们的日志被打包在一起并几乎同时输出。如果计划很长,则不同状态日志之间的时间戳将是延迟。如果计划很短(每4秒),则不同状态之间的时间戳始终相同。您还可以在此article中看到两个状态函数日志。
两个状态功能日志(已启动,已完成):
答案 2 :(得分:1)
问题仍然存在,并且似乎只影响消费计划功能。
我有很多应用服务计划的功能都从未遇到过此问题,但是我的前两个消费计划功能却有报告的问题。两者都将RunAtStartUp设置为true,因此请按照前面的建议将其关闭将其尝试。
这当然应该被MS视为错误吗?显然不是,因为该错误在一年后仍然存在。