Azure Functions 在使用 CI 时修改时间触发间隔
Azure Functions modify timetrigger interval when using CI
假设我有一个时间触发函数,它应该只 运行 在生产中,或者在生产中可能有不同的时间表,我该怎么做?
当使用 CI 时,应用程序进入只读模式,并且时间触发间隔不可配置。
有几个选项,但我建议您定义 TimerTrigger
以从函数应用程序的应用程序设置中获取它的时间表 - 您可以在其中通过 CI 流程填充它,或在需要时手动。
在 VS 2017 工具中用 C# 定义函数,您需要这样的方法签名,例如
[FunctionName("MyTimerFunction")]
public static void Run([TimerTrigger("%TriggerInterval%")] TimerInfo myTimer, TraceWriter log)
并在功能应用程序设置中(或本地 local.settings.json
到 运行)定义计时器的 CRON 间隔。
{
"Values" : {
"TriggerInterval": "0 0 * * * *" // e.g. hourly
}
}
此外,如果您需要快速修复,即使您的 CI 进程已将应用程序设置为只读模式,您仍然可以将其设置为 read/write 然后更新设置 -当然,下次 CI 部署到该功能应用程序时会被覆盖。
假设我有一个时间触发函数,它应该只 运行 在生产中,或者在生产中可能有不同的时间表,我该怎么做?
当使用 CI 时,应用程序进入只读模式,并且时间触发间隔不可配置。
有几个选项,但我建议您定义 TimerTrigger
以从函数应用程序的应用程序设置中获取它的时间表 - 您可以在其中通过 CI 流程填充它,或在需要时手动。
在 VS 2017 工具中用 C# 定义函数,您需要这样的方法签名,例如
[FunctionName("MyTimerFunction")]
public static void Run([TimerTrigger("%TriggerInterval%")] TimerInfo myTimer, TraceWriter log)
并在功能应用程序设置中(或本地 local.settings.json
到 运行)定义计时器的 CRON 间隔。
{
"Values" : {
"TriggerInterval": "0 0 * * * *" // e.g. hourly
}
}
此外,如果您需要快速修复,即使您的 CI 进程已将应用程序设置为只读模式,您仍然可以将其设置为 read/write 然后更新设置 -当然,下次 CI 部署到该功能应用程序时会被覆盖。