Так что я использую Delayed :: Job работники (на Heroku) в качестве обратного вызова after_create после того, как пользователь создает определенную модель.Более продвинутый контроль над замедленными рабочими рабочими повторить
Общепринятый вариант использования, однако, оказывается, для пользователей что-то создавать, а затем сразу удалить его (вероятно, потому, что они допустили ошибку или что-то еще).
Когда это происходит, рабочие активируются, но к тому времени, когда они запрашивают модель под рукой, она уже удалена, НО из-за функции автоматического повтора эта злополучная работа будет повторять 25 раз, и определенно никогда не работает.
Есть ли способ поймать определенные ошибки и, когда они произойдут, предотвратить повторное повторение задания, но если это не ошибка, в будущем он повторит попытку?
Но это отвратительный, по сравнению с их иначе прекрасный нон-воздействуя дизайн :) Я Угадайте еще один реальный вопрос: неужели 25 неудач действительно вызывают проблемы? – Kevin
Работы должны быть устойчивыми к ошибкам и быть перезапускаемыми. Если это не так, вы должны либо: а) пересмотреть дизайн отложенного задания, либо б) убедиться, что задание понимает, какие ошибки он может «обрабатывать» и делать соответствующую вещь. Возможно, чтобы он молча вышел, чтобы избежать ошибки, вызвавшей повторный запуск. –