本文へ移動

Run の時間の数え方

Run、DB 操作、再試行で使う時間を整理します。

対象
CLIConsoleAPI

最終検証 · v1.4.16

Markdown

1日の利用時間は UTC 0時にリセットされます。 無料枠は30分、AGIラボ会員は90分です。 新しい無料アカウントの最初の7日間は10分です。 Run の回数ではなく、開始から終了までの経過時間を数えます。

Run の時間

成功した Run も失敗した Run も、1日の利用時間に数えます。 別の Handler を呼び出した場合は、その子 Run の時間も数えます。 タイムアウトした Run は、実行期限までの時間を数えます。

Run の実行期限は、プランの最長時間と、その日の残り時間のうち短い方です。 Wings が実行環境を呼ぶ前に失敗した定期実行・手動実行は数えません。 実行環境を呼んだ後は、Handler のコードが始まっていなくても経過時間を数えます。

Database の時間

Run の外から行う wings db query、wings db exec、Console での表の閲覧も、1日の利用時間に数えます。

Run 内の env.db は、すでに Run の経過時間に含まれます。 DB の時間を二重に加算しません。 DB に独立した日次時間制限はありません。

1日の時間を使い切ったとき

新しい Run と、Run の外からの DB 操作は開始できません。 rate_limited(HTTP 429、scope: duration_day)が返ります。 retryAfterSeconds は、次の UTC 0時までに待つ秒数です。 実行中の Run が使う予定の時間も、残り時間から引いて判断します。 すでに動いている Run の env.db は、この理由では止めません。

Schedule は、次の回より先に UTC 0時が来る場合だけ0時に再試行します。 次の回が先なら、superseded_by_next_occurrence としてその回を飛ばします。 この場合は Run を作りません。 予約済みの再試行も、新しい回が作られていれば飛ばします。 詳しくはScheduleを確認してください。

DB の順番を待つとき

DB 操作は、1アカウントにつき1つずつ動きます。 Run の外からの DB 操作が、実行されず待機のまま終わった場合は、DB 操作の時間を加算しません。 Run 内では、DB を待つ間も Run の経過時間に含まれます。 この場合も、DB 操作の時間を二重には加算しません。

Run の外からは最大9.5秒待ちます。 Run 内では、その Run の実行期限の0.5秒前まで待ちます。

DB が一時停止したとき

1操作が無料枠で5秒、会員で10秒を超えると、DB 操作は15分停止します。 無料枠で同じ UTC 日に2回目の停止が起きると、その日は使えなくなります。

操作の結果が不明な場合は、30秒として数えます。 実際にかかった時間が後で分かれば、その時間に直します。 この30秒を1日の利用時間に加えるのは、Run の外からの操作だけです。 Run 内では、Run 自体の経過時間を数えます。 応答が失われた場合などは、最大5分は次の操作が待つ場合があります。

Wings が結果不明と判定して操作を終えた場合は、DB も一時停止します。 開始した操作の結果が届かないまま5分の期限が切れた場合は、それだけで DB を一時停止しません。

db_time_quota_exceeded が返ったら、reason と retryAfterSeconds を確認してください。 busy は前の操作の終了待ち、paused は一時停止中です。 案内された時間まで待ってから、再度操作してください。