2016-04-01 113 views
0

所以我試圖讓我的一個小項目去我想在azure上主持,這是一個web應用程序,它工作正常,我最近發現了webjobs,現在我想用它來有一個任務運行數據收集和更新,我有一個控制檯應用程序。
我的問題是,我不能設置一個時間表,因爲它發佈到不支持調度的Web應用程序,所以我嘗試使用Azure Webjobs SDK並使用計時器,但它不會在沒有AzureWebJobsStorage連接字符串的情況下運行這是我無法得到的,因爲我的Azure帳戶是Dreamspark帳戶,我無法使用它創建Azure存儲帳戶。
所以我想知道是否有某種方式讓這個webjob以某種方式運行(每個小時左右)。否則,如果我只是將我的帳戶升級爲「即用即付」(Pay-As-You-Go)?我還會保留我的免費功能嗎?即SQL Server。Azure訂閱和webjob問題

林不知道這是否是正確的問題,但我試圖谷歌搜索沒有成功。

更新:決定只是讓控制檯應用程序在無限循環中運行,並且生病只是通過門戶進行監視,下面的代碼就是我正在使用的循環。

class Program 
{ 
    static void Main() 
    { 
     var time = 1000 * 60 * 30; 
     Timer myTimer = new Timer(time); 
     myTimer.Start(); 
     myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed); 

     Console.ReadLine(); 
    } 

    public static void myTimer_Elapsed(object sender, ElapsedEventArgs e) 
    { 
     Functions.PullAndUpdateDatabase(); 
    } 
} 
+1

不是最優雅的解決方案,但是您可以始終讓webjob運行一個無限循環,每次睡眠線程x分鐘。或者你可以計算時間跨度,直到下一次計劃運行,然後使用System.Timers.Timer觸發事件。 – Martin

+0

@Martin哦,對,這不是一個太糟糕的主意,我想我會給出一個鏡頭,我只是想一段時間循環,從來沒有評估爲假,除了它的非優雅之外有什麼不對? – Toxicable

+1

不應該真的是一個問題,所有雖然有不同的意見,請參閱 http://stackoverflow.com/questions/8815895/why-is-thread-sleep-so-harmful 請確保您添加「線程。睡眠(timeInMilliseconds)「或其他一些機制,而不是在while(true){..}循環中。 – Martin

回答

0

工作再上一個時間表您的Web工作的最簡單方式阿米特蘋果的博客名爲「How to add a schedule to a triggered WebJob」中詳細說明。

這是因爲添加名爲settings.job一個JSON文件到您的控制檯應用程序,並在其中描述要像這樣一個cron表達式的時間表一樣簡單:

{"schedule": "the schedule as a cron expression"}

例如,每運行作業30分鐘你已經有了這個在你settings.job文件:

{"schedule": "0 0,30 * * * *"}

Amit的博客也進入細節如何牛逼o寫一個cron表達式。

警告:此方法中使用的調度機制託管在Web應用程序正在運行的實例上。如果您的Web應用程序未配置爲Always On且未處於持續使用狀態,則可能會卸載它,然後調度程序將停止運行。

要防止出現這種情況,您需要將Web應用程序設置爲始終開啓,或者根據Azure Scheduler服務選擇備用計劃選項,如David Ebbo編寫的標題爲「Hooking up a scheduler job to a WebJob」的博客文章中所述。

+0

因爲它是一個在web應用上發佈的webjob,所以我不能設置一個計劃,因爲我在我的文章中詳細描述過,我試過這個,但是當我部署它只是因爲這個原因失敗。如果它沒有發佈到Web應用程序和獨立的webjob,那麼情況就不會如此,但我無法訪問我的帳戶 – Toxicable

+0

Web作業永遠不會獨立。即使Web應用程序是「空的」,它們也始終在Web應用程序的上下文中運行。也許您可以分享您部署Web作業的方法以及從Azure收到的確切響應? – urig

+0

對不起,我以爲他們是獨立的,我從來沒有使用其他類型的,所以我不知道。正如我在我的問題中概述的那樣,我使用的是DreamSpark計劃,因此我鎖定了很多東西,其中包括Web應用程序中的應用程序設置下的Always On和其他形式的Web作業。我正在做的我已經從VS發佈了「發佈爲Webjob」與我的Web應用程序具有相同的發佈設置。當我使用連續模式時,我最終會中止並且不會重新啓動 – Toxicable