以下の各セクションでは、AppSheet がスケジュール設定されたイベントを使用して、bot を保存、トリガー、実行、再試行する仕組みについて詳しく説明します。
- スケジュール設定されたイベントを使用して bot を保存する
- スケジュール設定されたイベントを使用して bot をトリガーする
- スケジュール設定されたイベントを使用して bot を実行する
- スケジュール設定されたイベントを使用して bot を再試行する
スケジュール設定されたイベントを使用して bot を保存する
スケジュール設定されたイベントを持つ各 bot は、レコードとして SQL データベースに保存されます。各レコードには、以下の情報が格納されます。
- スケジュール設定されたイベントを持つ bot を含むアプリケーションの名前
- スケジュール設定されたイベントを持つ bot の名前
- スケジュール設定されたイベントをトリガーする日時
スケジュール設定されたイベントを使用して bot をトリガーする
Schedule Service は、スケジュール設定されたイベントを持つ bot を適切なタイミングでトリガーします。これは、SQL データベースからレコードを読み取り、スケジュール設定されたイベントを持つ bot のうちトリガーすべきものを探すことで行われます。
Schedule Service は、スケジュール設定されたイベントを持つ bot のうちトリガーすべきものを見つけると、AppSheet サービスに対してリクエストを発行し、スケジュール設定されたイベントを呼び出します。このリクエストには、スケジュール設定されたイベントを持つアプリケーションと bot の名前が含まれています。これにより AppSheet サービスは、スケジュール設定されたイベントを見つけて実行できます。
Schedule Service は、スケジュール設定されたイベントが完了するまで、最大 5 分間のタイムアウト期間を待機します。
スケジュール設定されたイベントを使用して bot を実行する
スケジュール設定されたイベントを持つ bot を実行するのは、AppSheet サービスの役割です。Schedule Service からリクエストを受信すると、そのリクエストに含まれているスケジュール設定されたイベントを持つアプリケーションと bot の名前を使用して、スケジュール設定されたイベントを取得し、その実行を開始します。
AppSheet サービスは、スケジュール設定されたイベントの実行開始時刻を記録します。これにより AppSheet サービスは、スケジュール設定されたイベントの実行に時間がかかりすぎていないか定期的に確認します。合計実行時間が 5 分を超えると、AppSheet サービスは実行を中止します。
スケジュール設定されたイベントを持つ bot の実行が完了すると、AppSheet サービスはリクエストに応答し、スケジュール設定されたイベントが正常に完了したかどうかを示します。
スケジュール設定されたイベントを使用して bot を再試行する
AppSheet サービスがスケジュール設定されたイベントを持つ bot を実行している間、Schedule Service は、AppSheet サービスがスケジュール設定されたイベントの実行を完了し、リクエストに応答するのを待機しています。
スケジュール設定されたイベントを持つ bot の実行が 5 分以内に完了しなかった場合、Schedule Service は、スケジュール設定されたイベントがなんらかの理由で失敗したものとみなします。スケジュール設定されたイベントを持つ bot は、以下のような複数の理由で失敗する可能性があります。
- スケジュール設定されたイベントを持つ bot が複雑で、実行に時間がかかる。この場合、bot の実行時間が、AppSheet サービスのタイムアウト期間である 5 分間を超過してしまう可能性があります。
- スケジュール設定されたイベントを持つ bot が、同じ時間に実行するようにスケジュール設定された他の bot と競合しているために遅延している。スケジュール設定されたイベントを持つ bot は、多くの場合、ある時間ちょうどに実行されるようにスケジュール設定されます。そのため同じ時間に大量の bot が起動し、ある bot が競合する他の bot の完了を待機することになる場合があります。これにより bot の実行がすぐに開始されず、Schedule Service の 5 分間のタイムアウト期間内に実行が完了しないために、タイムアウトになる可能性があります。この問題は、ちょうどの時間から少なくとも前後に数分間ずらした時間に bot の実行をスケジュール設定することで軽減できます。
- スケジュール設定されたイベントを持つ bot が、なんらかの理由で再起動された AppSheet サーバー上で実行されている。これもタイムアウトの原因となる可能性があります。
Schedule Service が、スケジュール設定されたイベントを持つ bot が 5 分間のタイムアウト期間内に完了しなかったことを検出すると、最大 3 回までその実行を再試行します。Audit History で、スケジュール設定されたイベントを持つ bot が 5 分間隔で呼び出されていることが示されている場合、Schedule Service がその実行を再試行している可能性があります。