ある期間内で実行されるスクリプトの回数を一定にしたいと考えています

Avatar
dstn

Question

ある期間内で実行されるスクリプトの回数を一定にしたいと考えています。

スケジュールトリガーのインターバル設定で[スクリプト実行中の場合、終了後実行する]を指定した場合、
スクリプトの処理の所要時間にかかわらず、実行回数は保証されますか。
たとえばスクリプト実行中に次の実行のタイミングが来た場合、実行するべきスクリプトは待機扱いになり、
実行可能な状態になったときに連続で実行されますか。

Answer

スケジュールトリガーのインターバル設定では、1 秒ごとに状況を確認し、
条件を満たしている場合にスクリプトを実行します。
実行するスクリプトを待機扱いで保持する仕組みはありません。

ただし、[スクリプト実行中の場合、終了後実行する]を指定し、
5 分おきにスクリプトを実行するように設定している場合に、あるタイミングでは
スクリプトの開始から終了までに 10 分かかり、次のタイミングの実行が 1 分で
終了した場合には、発火予定時刻が現在時刻よりも前のときには連続で実行されるため
待機状態であるように見えます。

■対処方法

特定の期間内で実行されるスクリプトの数を一定にしたい場合には、以下のいずれかで
ご対応をお願いいたします。
・[スクリプト実行中であっても、一定間隔で実行する]を指定する
・実行するタイミングごとに日単位のスケジュールトリガーを設定する

期間に関わらず実行回数を保証したい場合には、[スクリプト実行中の場合、終了後実行する]を
指定していてもスクリプトの処理の所要時間の所要時間に関わらず、保証されます。

■補足

[スクリプト実行中の場合、終了後実行する]を指定している場合、以下のすべての条件を
満たすときにスクリプトを実行します。

1. トリガーの状態が「待機中」
2. 発火予定時刻が[実行時間]の範囲内
3. 現在時刻が発火予定時刻を過ぎている

スクリプトの実行中に発火予定時刻になった場合、トリガーは「実行中」のため(条件1.に該当しない)、
新規にスクリプトを実行しません。スクリプトの実行が終了して、トリガーの状態が「待機中」になった
タイミングでスクリプトを実行します。

「発火予定時刻」の取得方法については Q299 をご参照ください。

参考情報

・Q299
 https://appresso.my.salesforce.com/articles/ja/Faq/DssFaq00299


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


ID:Q233

コメント

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

Powered by Zendesk