スケジュールは、保存済みのワークフローを、毎回同じ入力と予算で、決めた時刻に開始します。開始されるものはすべて通常の実行です。自分で開始した実行と同じように記録され、課金され、破棄されます。
スケジュールとは
スケジュールには、ワークフロー、cron 構文のタイムテーブル、タイムゾーン、そして各実行の入力と予算を指定します。たとえば、東京時間の平日 09:00 に、前日の新規顧客を調べ、接続を通じてそれぞれにウェルカムメールを送信する場合は次のようになります。
{
"workflow": "welcome-new-customers",
"name": "Weekday welcome emails",
"cron": "0 9 * * 1-5",
"timezone": "Asia/Tokyo",
"input": { "signed_up": "yesterday" },
"max_cost_micros": 200000
}ダッシュボードのスケジュールでは、タイムテーブルを画面上で作成できます。数分おき、毎時、毎日 (1 つ以上の時刻)、曜日や日付の指定、または任意の cron 式から選べます。保存する前に、次回以降の開始時刻も確認できます。
タイムテーブル
タイムテーブルは 5 つのフィールド (分、時、日、月、曜日) で構成されます。各フィールドには、値、リスト (1,15)、範囲 (1-5)、ステップ (*/15)、または * を指定できます。省略記法も使えます。
| タイムテーブル | 開始のタイミング |
|---|---|
*/ | 15 分ごと。 |
0 * * * * | 毎時 0 分。 |
30 8,17 * * * | 毎日 08:30 と 17:30。 |
0 9 * * 1-5 | 平日の 09:00。 |
0 6 1 * * | 毎月 1 日の 06:00。 |
@daily | 毎日午前 0 時。@hourly、@weekly、@monthly も使えます。 |
@every 90m | 90 分ごと。スケジュールを保存した時点から数えます。 |
時刻は、スケジュールの timezone で解釈されます。Europe/Madrid のような IANA 名で指定するため、夏時間の切り替えをまたいでも、09:00 のスケジュールは 09:00 のままです。スケジュールが開始されるのは、最短で 1 分に 1 回です。
開始の仕組み
- Ephemeral は数秒ごとに実行時刻を迎えたスケジュールを確認し、ワークフロー、入力、予算を指定して
POST /v1/runsを呼び出した場合と同じように開始します。実行には、どのスケジュールが開始したかが記録されます。 - 各開始時刻の実行は 1 回だけです。開始すべき時刻に Ephemeral が利用できなかった場合は、復旧後に 1 回だけ実行され、その後はタイムテーブルどおりに戻ります。
- デフォルトでは、スケジュールの前回の実行がまだ続いている間は開始がスキップされ、スケジュールにその旨が記録されます。実行が重なってもよい場合は、
skip_if_runningをfalseに設定してください。 - ワークフローが削除された、クレジットが足りないなどの理由で開始に失敗すると、スケジュールは理由を記録し、次の時刻に再試行します。開始が 5 回連続で失敗すると一時停止します。再びオンにすると、回数はリセットされます。
スケジュール実行を追跡する
スケジュール実行はほかの実行と並んで表示され、schedule_id が付きます。特定のスケジュールの実行を一覧するには GET /v1/runs?schedule={id} を使います。スケジュールはコールバックを送信しません。結果に応じた処理をしたい場合は、ワークフロー側で接続を通じて行うか、スケジュールの実行をポーリングしてください。