Azure研究サイト

Azure研究サイト

~理解しずらい情報をシンプルにお伝えします~

AzureAppServiceのWebジョブとは(作成方法・トラブル対応)

AppServiceのWebジョブ機能とは

AzureAppServiceの機能の1つです。
課金については、AppServiceと同じAppServiceプラン上で実行されるためプラス料金は発生しません。選択したAppServiceプランの価格レベルが、Webジョブの処理性能・パフォーマンスにも影響します。
 

 

 
 

Webジョブの仕組み

仕組みを説明しますと、AppServiceのアプリケーションの子プロセスとして実行されます。
非同期プロセスで実行されるので、AppServiceアプリケーション(親プロセス)ではやらせたくない時間がかかる処理などを、Webジョブで実行したりします。(WebジョブではなくFunctionsのHttpTriggerなどで実装する選択肢もありだと思います。従量課金プランなら一定実行量までは無料ですよね。)
 
 

Kudu(SCM)サイトのProcessExplorerで見ると、Webジョブがw3wp.exeの子プロセスであることを確認できます。Kuduサイトは、こちらの記事で説明してます。


 
 
 
そして、Webジョブには「継続的ジョブ」「トリガージョブ」の2種類あるので紹介します。
 

継続的ジョブ

多くの用途に使用できます。例えば、データベースのバックアップ、定期的なデータの処理・レポートの生成などが考えられ、AppServiceのWebアプリケーションと同じアプリケーションプールで実行され、常に実行され続けます。これにより、定期的なタスクを自動化することができます。ジョブは、スクリプトファイル・バッチファイル・コマンドラインツールを使用して実行されます。
 

トリガージョブ(スケジュール・手動)

トリガーを選択した場合は、「スケジュール」「手動」のいずれかの起動方法を選択します。
 
スケジュールを選択した場合は、
0 /15 * * * (15分ごとの実行スケジュールの例)
のようにCRON式を設定します。FunctionsのTimerTriggerと同じ様な動きをします。
 
 

スケジュール設定(CRON式)

CRON式の書き方等は公開情報を見ていただくとして、注意点を紹介します。
スケジュール設定をRestAPIで設定した場合、スケジュールが指定されていない状態に更新されてしまう場合があります。CRON式を設定する部分が "空" または不正な設定文字列である場合にスケジュール設定がNULLとして設定され、スケジュールが指定されていない状態となってしまうんです。(知られていない情報)
 
ポータル画面からスケジュール設定を行なう場合は、入力必須項目になってるのでNULLが設定されてしまう心配はありません。
 
Webジョブスケジュール設定用API

github.com

 

スケジュール確認

以下のRESTAPIを使うと、スケジュール設定を確認できます。
 
REST API URL:https ://{sitename}.scm.azurewebsites.net/api/triggeredwebjobs/{jobname}  

blog.amitapple.com

===== 抜粋 ここから =====
Debugging a schedule
To see the scheduler logs for a scheduled WebJob you need to use the get triggered WebJob api, go to the url: https ://{sitename}.scm.azurewebsites.net/api/triggeredwebjobs/{jobname} (remove the job name to see all triggered WebJobs).
===== 抜粋 ここまで =====
 

settings.jobファイル

スケジュール(CRON式)設定について、settings.jobファイルに "schedule" 項目を設定する必要があります。
Azure側はこの設定をみて、Webジョブを実行しています。

github.com

===== 抜粋 ここから =====
To schedule a triggered WebJob you need to add a schedule property to the settings.job file.
(機械翻訳) トリガーされたWebジョブをスケジュールするには、settings.jobファイルにスケジュールプロパティを追加する必要があります。
===== 抜粋 ここまで =====
 

常時接続を有効にする(継続的・トリガー共通)

Webジョブを使う場合、AppServiceの常時接続設定が有効である必要があります。

docs.microsoft.com

===== 抜粋 ここから =====
継続的な Webジョブや、CRON式を使用してトリガーされるWebジョブに対して有効にする必要があります。
===== 抜粋 ここまで =====
 
 

デバッグログでWebジョブが実行されているか確認(継続的・トリガー共通)

ちゃんとWebジョブが実行されているのかを確認したい場合があると思います。
Webジョブが実行されているかを確認するためには、以下を参考にデバッグログを処理の先頭部分に挿入し、ログが出力されるか(該当の Webジョブが処理開始されているか)を確認する方法を紹介します。

blog.shibayan.jp

 
 
以上が、Webジョブの基礎知識になります。
 

ご意見・ご要望はこちらへ 


/*--------------------------------------------------------------------*/