2016-04-01 4 views
0

私は青空でホストしたいという私の小さなプロジェクトを手に入れようとしています。これはうまく動作するWebアプリケーションです。最近私は今使ってみたいwebjobを見つけました私はコンソールアプリケーションを持っているデータ収集と更新を行うタスクを実行します。
スケジューリングをサポートしていないWebアプリケーションに公開されているので、スケジュールを設定できません。Azure Webjobs SDKを使用してタイマーを使用しましたが、AzureWebJobsStorage接続文字列私のAzureアカウントはDreamsparkアカウントなので入手できません。Azureアカウントを作成することはできません。
このWebジョブを何とか(何時間も)実行する方法があるのだろうかと思っていました。それ以外の場合は、アカウントを「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にinfinteループを実行させて、一度にx分間スレッドをスリープさせることができます。または、次のスケジュールされた実行までのタイムスパンを計算し、System.Timers.Timerを使用してイベントをトリガーすることもできます。 – Martin

+0

@Martin Ohそう、あまりにも悪い考えではない、私はそのショットを与えるだろうと思う、私は偽に評価されないちょっとしたループを考えている、それの非優雅さを除いて何か間違っている? – 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」と題しアミットAppleのブログに詳細です。

そうのようにcron式として、あなたがしたいスケジュールを記述し、コンソールアプリケーションに、それにsettings.jobをJSONファイルを追加するのと同じくらい簡単と呼ばれています:すべてのあなたの仕事を実行するために、例えば

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

30分、あなたのsettings.jobファイルでこれを持っていると思います:

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

アミットさんのブログにもどのようにトンの詳細に入りますo cron式を書く。

警告::この方法で使用されるスケジューリングメカニズムは、Webアプリケーションが実行されているインスタンスでホストされています。 WebアプリケーションがAlways Onに設定されておらず、常時使用されていない場合は、アンロードされてスケジューラが実行を停止します。 Azure Schedulerサービスに基づいて、デビッド・エボによって書かれた「Hooking up a scheduler job to a WebJob」と題したブログ記事で説明したように - あなたは常にオンにWebアプリケーションを設定するか、代替スケジュールオプションを選択する必要がありますいずれか、これを防止するために

+0

私は私のポストに詳述されているようにスケジュールを設定することはできませんwebjobですので、私はこれを試してみましたが、 Webアプリケーションと独立したWebジョブに公開されていない場合、これは当てはまりませんが、私は自分のアカウントでアクセスできません – Toxicable

+0

Webジョブは決して独立していません。 Webアプリケーションが「空」であっても、Webアプリケーションのコンテキストで常に実行されます。おそらく、あなたはWeb Jobを展開した方法と、Azureから受け取った正確な応答を共有できますか? – urig

+0

申し訳ありませんが、私は彼らが独立していると思った、私は決して他のタイプのものを使用していないので、私は知らない。私が私の質問で概説したように、私はDreamSpark計画を立てているので、Web AppのAlways Onアプリ設定やその他のWebジョブなど、多くのことが私のためにロックアウトされています。私がやっていることは、VSから「Webjobとして公開」をWebアプリケーションと同じ公開設定で公開しています。私はそれを連続モードで使用すると、最終的に中止され、再起動ができなくなるでしょう。 – Toxicable

関連する問題