繁体   English   中英

回收/重新启动WebApp后如何使用TimeTrigger自动启动Azure WebJob

[英]How to automatically start Azure WebJob with TimeTrigger after recycle/restart WebApp

我在Azure WebApp中使用WebJob。 作业执行一个方法:

public static void ProcessQueue(
            [TimerTrigger("00:02:00")] TimerInfo timerInfo,
            [Queue("queue")] CloudQueue queue,
            [Table("processing")] CloudTable processingTable,
            TextWriter log)
{
    // do sth...
}

TimeTrigger选项来自Microsoft.Azure.WebJobs.Extensions

我将WebApp设置为以“始终在线”模式运行

但是,如果我正在重新启动或更改应用程序设置,WebApp可能会在内部进行回收? 我认为。

因为在此之后,我得到以下错误:

[11/10/2016 08:22:24> 36d12e:SYS ERR] WebJob运行失败,原因是:System.Threading.ThreadAbortException:线程正在中止。 在Kudu.Core.Jobs.TriggeredJobRunner。

因此,我尝试在WebJob上设置时间表,并且还尝试将CRON时间表粘贴到目录中,但是在复位/回收后没有任何帮助使工作“运行”。

更新1
我的exe的内容( Main()

JobHostConfiguration config = new JobHostConfiguration();
config.Tracing.ConsoleLevel = TraceLevel.Verbose;
config.Queues.MaxDequeueCount = 10;
config.UseCore();
config.UseTimers();
var host = new JobHost(config);
host.RunAndBlock();

更新2
如果我在Azure Portal中手动连续部署,一切都会按预期运行(感谢mathewc)。 但这是一个手动步骤;)。 在DevOps场景中,所有内容都将由Visual Studio Team Services生成,创建和部署,并且您无法在其中设置任何将作业部署为continuation的选项。

根据显示的调用堆栈,您看起来好像是错误地将作业部署为触发式 WebJob而不是连续 WebJob? 使用WebJobs SDK时,应按此处所述连续部署WebJobs。

以连续模式运行后,如果更改了应用程序设置或以其他方式导致重新启动,则WebJobs也将重新启动是正确的。 但是,TimerTrigger的内部调度程序将确保作业在备份后继续按计划运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM