簡體   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