我有一个功能应用程序有3个功能,其中一个定时器每2分钟触发一次.我观察到一段时间后,该函数停止被触发,但是当我进入门户时重新启动.
据我了解,原因是默认情况下,"Always On"已关闭.但是,当我转到应用程序设置/常规设置时,我无法激活灰色的"开启"状态.我可以取消选中"关闭",这似乎不会粘住或激活"开启".
我错过了一些明显的东西吗 是永远 - 解决我的问题的解决方案,还是我应该做的其他事情?
注意:函数是用F#编写的; 我怀疑这很重要,但我想我会提到它以防万一.
我在生产中运行了定时器触发的Azure功能,但现在我希望在函数失败时收到通知.
在我的情况下,访问各种连接的服务可能会导致崩溃,并有许多故障排除.崩溃是我需要通知的错误类型.
当函数失败时,日志条目指示失败,所以我想知道系统中是否存在允许我使系统生成通知的挂钩.
我知道blob和队列绑定例如支持创建毒物队列条目,但是计时器触发器绑定没有说明任何有关该性质的触发器输出.
我看到函数可以将它们的$ return状态作为输入传递给其他函数,但是文档中没有深入解释该操作.此外,在这种情况下,我需要编写另一个函数来处理错误状态,我正在寻找内置的东西.
我已经向@AzureSupport询问过,但他们的回答与Azure Functions无关,而是将我引用到DLL通知挂钩,然后在uservoice上推荐我的文件.
我确信这里必须有人实施了某种错误状态通知.我更喜欢不需要代码的解决方案.
我有Azure功能与计时器触发器.
public static void Run([TimerTrigger("0 */15 * * * *"), Disable("True")]TimerInfo myTimer, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)
这里Disable("true")不起作用.它产生的function.json作为
"disabled": "True",其是不正确的.它应该是"disabled": True,
Disable只接受字符串值.有没有办法改变这个?或任何其他方式来禁用功能?
注意:尽管它可能看起来重复,但我的问题是不同的,我要求您阅读完整的描述,然后仅通过阅读问题标题就匆忙地将问题记下来。
我于2017 年 5 月 24 日在官方“ azure-webjobs-sdk-script ”git 存储库中打开了“ Azure 功能未在预定时间触发”问题,但目前还没有回复。所以我在这里重新提问。
我在消费计划中使用 azure 函数,并通过在 function.json 中设置以下 cron 表达式将其安排在每 UTC 时间凌晨 4 点执行:
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 0 4 * * *"
}
],
"disabled": false
}
Run Code Online (Sandbox Code Playgroud)
仅当我登录门户或单击函数刀片时, Azure 函数才会按时执行。当我从门户注销时它不会调用(建议系统侦听器或函数在一段时间后进入睡眠状态)。
他们的官方文档指出,消费计划中的函数不需要任何其他设置(如始终开启)来保持函数的活动状态,Azure Functions 主机的实例会根据传入事件的数量动态添加和删除。. 因此,根据文档,我无需配置其他设置即可执行消费计划中的功能。
我尝试过什么?
从“定时器触发的天蓝色功能未触发”问题中,我重新检查并确保了我的计划(消费计划)和时区。(我希望它在 utc 中运行,所以不需要显式设置)
从“ #1445:Azure 函数计时器触发器未触发”git 问题中,我检查了是否只是未出现的日志。但我当然可以肯定,它不是日志,而是不会触发实际功能,除非我打开门户或手动触发它。
如果我将计划更改为更接近的递归调用,我试图检查这种行为是否存在——我计划函数每 2 小时执行一次,即使我注销或没有手动唤醒函数,这个计划也能完美运行。这意味着,当计划设置为在更大的间隔集上运行时会出现一些问题(在我的情况下是每天)
每小时的 cron 表达式是什么?我试过这个 '0 0 * ?* *' 但它抛出了一个错误我有一个 Azure 函数计时器触发器
下面的这个表达式每分钟运行一次。
public static void Run([TimerTrigger("0 * * * * *")]TimerInfo myTimer, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)
这是我在尝试“0 0 * ? * * *”和“0 0 * ? * *”时收到的错误
[11/22/2018 12:45:29 AM] 发生 ScriptHost 错误 [11/22/2018 12:45:29 AM] Microsoft.Azure.WebJobs.Host:错误索引方法“Currencies.Run”。Microsoft.Azure.WebJobs.Extensions:计划表达式 '0 0 * ? * * *' 未被识别为有效的 cron 表达式或时间跨度字符串。[11/22/2018 12:45:29 AM] 错误索引方法“Currencies.Run” [11/22/2018 12:45:29 AM] Microsoft.Azure.WebJobs.Host:错误索引方法“Currencies.Run” . Microsoft.Azure.WebJobs.Extensions:计划表达式 '0 0 * ? * * *' 未被识别为有效的 cron 表达式或时间跨度字符串。
我有一个 Azure 函数(内置于 Visual Studio 2019,并在 Azure 中的 .NET Core 3.x 堆栈上运行)应该由计时器触发,例如每晚运行一次。
我可以轻松创建函数并将计划定义为 NCRONTAB 表达式,如下所示:
[FunctionName("MyFunctionName")]
public void Run([TimerTrigger("0 15 3 * * 1-5")]TimerInfo myTimer, ILogger log)
{
// Azure function code here ....
}
Run Code Online (Sandbox Code Playgroud)
像魅力一样工作 -但我希望能够在 Azure 门户中定义时间表 - 而不是在我的函数代码中 - 来处理例如 DEV 与 TEST 与 PROD 情况。在 DEV 和 TEST 平台上,我可能希望每天运行几次——在生产中可能每周只运行一次。
但是使用这种方法,一旦设置了时间表 - 它已经设置,我无法在 Azure 门户中更改它(所有输入字段都变灰/禁用编辑)。
我希望我可以在 Azure 函数的声明中跳过 NCRONTAB 表达式 - 像这样:
[FunctionName("MyFunctionName")]
public void Run([TimerTrigger()]TimerInfo myTimer, ILogger log)
{
// Azure function code here …Run Code Online (Sandbox Code Playgroud) 我们有两个使用TimerTrigger运行的Azure Webjob部署(Prod和Test).这两个Web应用程序都有单个实例.根据这篇文章,TimeTriggers使用单例锁来确保没有并行调用.这两个实例使用相同的存储帐户.我们面临的问题是,只有其中一个部署似乎获得锁定,而其他部署无法获取锁定.如果我们停止第一个webjob,则第二个获取锁定并开始处理,反之亦然.
锁是否依赖于存储帐户?我们如何确保这两个部署都具有单独的锁定机制并同时运行?
我想通过顺序执行来执行Azure计时器触发器.
假设我有5分钟间隔的C#定时器触发器.但是功能需要时间才能执行8分钟.这意味着在第一次调用完成之前,第二次触发启动另一个线 我怎么能避免这个?