Azure timertriggered webjob随机挂起

问题描述 投票:2回答:1

我想安排一个timertriggered方法来调用其他方法但不知何故CronJob方法不会运行,如果我用它来调用我自己的方法之一,我只是得到这个控制台输出:“找到以下函数:... ProcessQueueMessage。 ..Functions.CronJob工作主持人开始“

没有其他事情发生几分钟然后它可能会突然开始工作。但是,如果我只使用CronJob()方法运行它自己的Console.WriteLine(“Timer job fired”)语句一切正常。

我一直试图找到这个问题的解决方案好几个小时,但似乎没有人有同样的问题。关于我做错了什么的任何想法?

public static void CronJob([TimerTrigger("*/3 * * * * *", RunOnStartup = true)] TimerInfo timerInfo)
    {
        Console.WriteLine("Timer job fired! ");
        DoTask();

    }

    private static void DoTask()
    {
        Console.WriteLine("Doing task...");
    }

主要方法:

static void Main()
    {
        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }

        var host = new JobHost(config);
        config.UseTimers();
        // The following code ensures that the WebJob will be running continuously
        host.RunAndBlock();
    }
c# azure scheduled-tasks azure-webjobs
1个回答
3
投票

关于我做错了什么的任何想法?

根据您的描述,它与您是否直接调用代码无关。根本原因是blob租约(Singleton Lock)的默认时间为30秒。

正如Rob Reagan所说,你可以将JobHostConfiguration.Tracing.ConsoleLeve设置为Verbose。当webjob挂起时,您可以获得“无法获取Singleton锁定”的信息。

有关更多详细信息,请参阅此issue

当侦听器启动特定的TimerTrigger函数时,blob租约(Singleton Lock)的默认时间为30秒。这是一个锁,确保您的计划函数的任何一个实例都可以随时运行。如果你杀了你的控制台应用程序,该租约仍将保留,直到它自然过期

© www.soinside.com 2019 - 2024. All rights reserved.