讓我們假設每五分鐘通過CRON觸發一項作業。出於某種原因,在10:00執行的一次執行持續顯着更長時間,例如, 8分鐘。第二個實例是在10:05觸發的嗎?頻繁觸發的CRON Azure Web作業在運行時間超過所配置的頻率時第二次觸發
如果是的話,確保工作是以單身身份運行而不是兩次的正確策略是什麼?
讓我們假設每五分鐘通過CRON觸發一項作業。出於某種原因,在10:00執行的一次執行持續顯着更長時間,例如, 8分鐘。第二個實例是在10:05觸發的嗎?頻繁觸發的CRON Azure Web作業在運行時間超過所配置的頻率時第二次觸發
如果是的話,確保工作是以單身身份運行而不是兩次的正確策略是什麼?
我沒有測試它自己又但從docs我發現這句話
如果您使用的必須爲單一實例中運行的時間表驅動的任務, 要注意以下事項:
- 如果運行(使用Windows計劃任務,如 虛擬機)調度的計算實例進行縮放,你會 有調度運行多個實例。這些可以啓動 多個實例的任務。
- 如果任務用於非調度事件之間的 週期長,調度可以啓動另一個 實例任務而的以前一個仍在運行的。
可能的解決方案也是在文檔中this部分
默認情況下提到,WebJobs規模及其關聯Azure的Web應用程序 實例。但是,如果您希望WebJob僅作爲單個實例運行,則可以創建一個
Settings.job
文件,其中包含JSON 數據{ "is_singleton": true }
。這迫使Azure僅運行WebJob的一個 實例,即使存在多個關聯的Web應用程序的實例。對於必須作爲唯一實例運行的計劃作業 ,這可能是一種有用的技術。
和that部分
默認情況下,WebJobs規模與Web應用程序。但是,通過將
is_singleton
配置屬性設置爲true
,可以將 作業配置爲在單個實例上運行。單實例Web作業對於 任務非常有用,因爲這些任務不想縮放或作爲同步多個 實例運行,例如重新索引,數據分析和類似任務。