Я использую Rails 5
на Heroku
для очень экономичного приложения для обработки платежей, которое будет выполнять большие объемы обработки.
Приложение не имеет большого функционала, поэтому оно размещается там. Тем не менее, одна вещь, которую он должен делать на 100% надежно, — это запускать задания по обработке платежей и запускать определенные из них только один раз. Если не 100% (потому что нет ничего идеального), то 99,9999%.
Я выбрал Delayed Job
вместо Sidekiq
для этой дополнительной целостности базы данных. Я также планировал использовать драгоценный камень Clockwork
.
После прочтения проблем кажется, что есть много проблем с тактовыми процессами, запускаемыми много раз при перезапуске dynos.
Мне интересно, как лучше всего решить эту проблему с помощью Rails
/Heroku
. Как я могу очень, очень надежно запускать определенные задания только один раз, несмотря на перезапуски и что-то еще?
Кроме того, я забыл упомянуть, что некоторые задания можно перезапускать несколько раз. Скорее всего, эти задания будут выполняться ежедневно или в любое время. Я не беспокоюсь о них на самом деле.
Я также говорю о расписании заданий из действия Rails (это будут критические задания). Возможно ли, что перезапуск web
dyno предотвратит отложенное задание от планирования задания из моего кода, если оно перезапустится в середине действия?