从数据库表的确切时间触发了Azure功能计时器

时间:2019-07-09 02:14:28

标签: javascript node.js azure cron azure-functions

我在数据库表中有一个Azure函数(node.js)和准确时间列表(7:30、8:05等)。我想使用数据库表在准确的时间触发Azure功能。

现在我的问题是

  1. 计时器触发器仅执行单个cron时间表吗?
  2. 我是否可以使用环境变量在时间1(例如7:30)触发,然后在完成后将环境变量更改为代码中的时间2(例如8:05)?这样它才能在time2(8:05)再次运行?
  3. 其他功能(HTTP触发)是否可以运行我的原始功能(计时器触发)并更改环境变量?

2 个答案:

答案 0 :(得分:1)

您还可以为此使用耐用功能:https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-timers#usage-for-delay

您可以在那里从数据库动态加载时间,并为下一次执行创建新的计时器。一旦运行,创建下一个计时器。

基本上,您将得到一个永恒的协调器(可以):https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-eternal-orchestrations#periodic-work-example

答案 1 :(得分:0)

  

计时器触发器仅执行单个cron时间表吗?   是的,计时器触发器只能有一个cron表达式

关于动态cron表达式,您可以参考此ConfigurationScheduleExpression会降低应用设置中的设置。您可以使用"schedule": "%TriggerSchedule%"进行设置。并在应用设置中定义TriggerSchedule。然后动态修改您的应用设置。

另一种方法是使用Kudu API修改function.json。

PUT https://{functionAppName}.scm.azurewebsites.net/api/vfs/{pathToFunction.json}, Headers: If-Match: "*", Body: new function.json content

然后同步功能触发器。

POST https://{functionAppName}.scm.azurewebsites.net/api/functions/synctriggers
  

其他功能(HTTP触发)能否运行我的原始功能   (已触发计时器),并且还更改了环境变量?

您可以在Timer函数中调用HTTP触发函数,但是Azure Functions运行时配置文件不可写。但是在运行App Service时,您可以通过PowerShellREST apiCLI以编程方式管理这些设置。

请记住,对这些设置的更改将触发网站重启