gpt4 book ai didi

Azure 计划的 WebJob 从未完成状态

转载 作者:行者123 更新时间:2023-12-03 00:50:55 24 4
gpt4 key购买 nike

我有一个预定的网络作业,每分钟运行一个函数:

[TimerTrigger("00:01:00", RunOnStartup = true)]

有时它会挂起并处于“从未完成”状态几天。这可以防止触发作业的新计划。 Azure 日志也没有记录任何条目 - 该运行的日志为空。

我想知道如果作业处于“永不完成”状态/状态,是否有办法告诉 Azure 调度程序继续调度?设置“UseMonitor = true”可以做到这一点吗?

最佳答案

据我所知,如果计划的 Web 作业处理周期性地花费很长时间(或根本没有完成),则一定是您的作业功能中的操作时不时地花费很长时间或失败。一切都取决于您的工作实际上在内部做什么。如果它在某些地方变得异步,SDK 将继续等待它返回。

据此,我建议你可以尝试使用webjob的TimeoutAttribute。如果函数挂起,很容易根据超时取消函数,会显示异常。

如果你发现错误太大想要修改,我建议你可以使用ErrorTrigger,你可以引用这个article .

更多详细信息,您可以引用以下代码。

我用队列测试了一下,结果和TimerTrigger webjob一样。

  //Change the function timeout value
[Timeout("00:00:03")]
public static void TimeoutJob(
[QueueTrigger("queue")] string message,
CancellationToken token,
TextWriter log)
{

Console.WriteLine("From function: Received a message: " + message);

Task task = new Task(new Action(() => /*here is your code*/ Thread.Sleep(5000)), token);
// this will cancel the task is the token is CancellationRequested and show the exception the task is cancel
task.Wait();
Console.WriteLine("From function: Cancelled: Yes");
}

关于Azure 计划的 WebJob 从未完成状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44273434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com