while not done():
task = pop(queue)
try:
do(task)
except Exception as e:
log("Cannot do %s: %s", task, e)
# possibly sleep(5)
# possibly push(queue, task)
Что не так на этой картинке?
Если ошибка в обработке задачи вызвана внешними условиями - интернет отвалился, сервер упал, место на диске где-то кончилось - то с большой вероятностью она будет повторяться, пока не починится.
Логи с одной и той же повторяющейся ошибкой с разными задачами читать крайне неинтересно.
Правильно - запоминать тип результата и логировать его изменение. В том числе - с ошибки на успех: «Ух ты, сервер поднялся, работаем дальше». Или так: «Помнишь того чувака с китайским IP’шником, который всё никак не мог к нам залогиниться по ssh? Так вот он таки зашёл!» 😨
Design issue - продумать эквивалентность на множестве ошибок. Чтоб, с одной стороны, не спамить, а с другой - не терять полезную информацию.
This entry was originally posted at
http://yurikhan.dreamwidth.org/66683.html.