azure webjob不会停止(请求停止后继续工作)

时间:2016-11-17 17:00:29

标签: azure-webjobs timer-trigger

我们有以下情况。

我们决定在我们的一个Web App中使用webjob每30秒执行一些工作。

为此,我们使用从Main函数调用的以下代码:

        static void Run(bool locally)
    {
        JobHostConfiguration config = new JobHostConfiguration();
        if (locally)
        {
            config.Tracing.ConsoleLevel = TraceLevel.Verbose;
            config.UseDevelopmentSettings();
        }config.UseTimers();
        JobHost host = new JobHost(config);
        host.RunAndBlock();
    }

我们在webjob中只有定时器触发的方法:

      public static async Task TimerJob([TimerTrigger("00:00:30")] TimerInfo timer)
    {....

     IEnumerable<IInvitationProcessor> processors = _container.Resolve<IEnumerable<IInvitationProcessor>>();

     ....

   }

其中_container - autofac容器

我们注意到两个奇怪的不同的东西(看起来它们是相互关联的):

1)如果我们使用门户网站停止webjob,则webjob被显示为已停止,但事实上它仍在继续工作 - 我们在门户网站上的日志中看到日志,并且还登录了我们的webjob代码写入的AppInsights。重新启动WebApp没有帮助。唯一的

停止它的方法是删除webjob(事实上它继续工作),然后重新启动WebApp。只有在那之后,webjob才会停止(事实上它已经消失了)。

P.S。:我们的webjob使用TimerTrigger,而TimerTrigger又使用分布式锁来保证只会调用一个wbjob实例(每30秒)。因此,本地启动的实例仅在执行了上述操作(删除和重启)后才设法获取锁。 - 只是另一个证据 &#34;删除\停止&#34; webjob一直在运行。

2)经过一段时间(可能在重新部署之后),我们的webjob开始引发以下异常

在Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate处理System.IO.FileNotFoundException

尝试解决依赖关系时(看起来非常奇怪,因为大多数时候所有的dependecies都已成功解析 - 部署在azure Web App或本地)

感谢

0 个答案:

没有答案