スケジュールトリガーのインターバル設定で[実行する時間の範囲を指定]して「起動制限」の [スクリプト実行中の場合、終了後実行する]を選択した場合、前のスクリプト実行が遅延して 指定時間の範囲内に実行できなかった処理は、指定時間の範囲を過ぎても実行されるのでしょうか

Avatar
dstn

Question

スケジュールトリガーのインターバル設定で[実行する時間の範囲を指定]して
「起動制限」の[スクリプト実行中の場合、終了後実行する]を選択しています。

スクリプトの実行時間が予想以上に長くなって[終了時刻]を大きく超えたところ、
[終了時刻]を過ぎた後でも次のスクリプトが実行されていました。
なぜ指定した範囲を過ぎてもスクリプトが実行されていたのでしょうか。

Answer

■仕様説明

インターバルスケジュールトリガーでは、スクリプトを実行する直前に
次回にスクリプトを実行する「発火予定時刻」を、設定内容と現在時刻から
計算しています。

このため、スクリプトに時間がかかって[終了時刻]を過ぎた場合でも
スクリプトが実行されることがあります。
※実際の動作に関しては、下にある「■具体例」をご参照ください。

■注意事項

スクリプトの所要時間が実行する時間の範囲や実行間隔を大きく
超過する場合、[終了時刻]を過ぎてもスクリプトが実行される状況が
起きやすくなります。

実行する時間の範囲や実行間隔は、スクリプトの所要時間よりも
長くなるように設定してください。

■具体例

以下の設定でインターバルスケジュールトリガーを運用していると仮定します。
・実行間隔 1時間
・実行時間 実行する時間の範囲を指定
・開始時刻 09:00
・終了時刻 12:00
・起動制限 スクリプト実行中の場合、終了後実行する
・スクリプトの所要時間 処理件数が 0 件の場合は 1 分で終了するが、
          処理件数が多い場合は最大で 3 時間かかる

初回のスクリプト実行で、処理件数が多く、3 時間かかり、
以降のスクリプト実行では処理件数が 0 なので 1 分で終了する場合、
以下のような処理になります。

・09:00 より前
 開始時刻が 09:00 のため、発火予定時刻は 09:00 になります。

・09:00
 発火予定時刻(09:00)が現在日時と同時のため、スクリプトを実行します。

 スクリプトを実行する前に、インターバルスケジュールトリガーは
 発火予定時刻(09:00)に実行間隔(1 時間)を足して、
 発火予定時刻を 10:00 に更新します。

(スクリプトの処理に 3 時間かかったとします)

・12:00 
 発火予定時刻(10:00)が現在日時よりも過去のため、スクリプトを実行します。

 スクリプトを実行する前に、インターバルスケジュールトリガーは
 発火予定時刻(10:00)に実行間隔(1 時間)を足して、
 発火予定時刻を 11:00 に更新します。

(スクリプトの処理に 1 分かかったとします)

・12:01 
 発火予定時刻(11:00)が現在日時よりも過去のため、スクリプトを実行します。

 スクリプトを実行する前に、インターバルスケジュールトリガーは
 発火予定時刻(11:00)に実行間隔(1 時間)を足して、
 発火予定時刻を 12:00 に更新します。

(スクリプトの処理に 1 分かかったとします)

・12:02
 発火予定時刻(12:00)が現在日時よりも過去のため、スクリプトを実行します。

 スクリプトを実行する前に、インターバルスケジュールトリガーは
 発火予定時刻(12:00)に実行間隔(1 時間)を足して、
 発火予定時刻を 13:00 に更新します。

(スクリプトの処理に 1 分かかったとします)

・12:03
 発火予定時刻(13:00)が現在日時よりも未来のため、スクリプトを実行しません。

参考情報

・ ヘルプ[運用ツール] - [トリガー] - [スケジュールトリガー]
 http://patch.appresso.com/DataSpider/help/latest/doc/help/ja/trigger/schedule_trigger.html#interval



[注意事項]
  • このFAQの内容は2017年3月時点のものです。内容は予告なく変更されることがありますので、ご注意ください。
  • 一部にDataSpider Servistaサポートサイトへのリンクを含むことがあります。サポートサイトにアクセスするには、DataSpiderのサポート契約が必要です。


ID:Q299

コメント

記事コメントは受け付けていません。

Powered by Zendesk