諦めた先
何度やっても通らないものがある
再試行は、一時的に詰まっているものには効きます。
効かないものもあります。送信先のメールアドレスが存在しない、要求の中身が壊れている、といった場合です。
何度やり直しても結果は同じで、やり直したぶんだけ資源を食います。
捨てると、何が失敗したのか誰にも分からなくなります。
予約の確認メールが1件届かなかったとき、捨てていれば気づくのは利用者からの問い合わせです。残してあれば、こちらから先に気づけます。
別の場所へ移す
決めた回数で失敗したものは、捨てずに別の置き場へ移します。これを退避先と呼びます。
Python
# 3回まで試す
# 3回とも失敗 → 退避先へ退避先に溜まった数を見ていれば、壊れ方の種類が分かります。
同じです。だから溜まった件数を見る仕組みまでが、退避先を作る作業です。
0件が続くはずの場所に1件でも入ったら知らせる、という形にします。溜まっていること自体が異常なので、しきい値は0でよくなります。
演習
仕事の一覧と試す上限を受け取り、終わったもの・退避したもの・試した回数を返します。
要件
- 各仕事は fails 回失敗したあと成功する。つまり fails + 1 回目で成功する
- max_attempts 回試しても成功しなければ、その仕事の id を dead へ入れる。成功したら done へ入れる
- attempts は全部の仕事で実際に試した回数の合計。成功した時点でその仕事は止める
ヒント
編集 ゆめさく編集部