1

Я использую Rails 5 на Heroku для очень бережливого устройства обработки платежей, которое будет делать большие объемы обработки.100% надежный процесс синхронизации на Heroku?

Приложение не обладает большой функциональностью, поэтому его размещают там. Тем не менее, одна вещь, которую он должен сделать на 100% надежно, но выполняет задания по обработке платежей и запускает определенные только один раз. Если не 100% (потому что ничего не идеального), чем 99,9999%.

Я выбрал Delayed Job более Sidekiq для этой дополнительной целостности базы данных. Я также планировал использовать драгоценный камень Clockwork.

После прочтения вопросов, хотя кажется, что существует множество проблем с тем, что процессы синхронизации выполняются много раз, когда перезагружаются динамики.

Мне интересно, что является лучшим способом решить эту проблему с помощью Rails/Heroku. Как я могу, очень надежно запускать определенные задания только один раз, несмотря на перезагрузки и все остальное?


Кроме того, я забыл упомянуть, что некоторые задания могут повторно запускаться несколько раз. Скорее всего, эти задания будут запускаться ежедневно или когда угодно. На самом деле меня это не касается.

Я также говорю о календарном графике работ из-за действия Rails (это будут критические). Возможно ли, что перезагрузка dyna web не позволит Delayed Job планировать задание из моего кода, если он перезапустится в середине действия?

ответ

1

С государственной машины. Когда задание создано, вы задаете состояние задания :pending. Когда задание начнет работать, измените состояние на :running. Когда задание завершится, измените состояние на :complete. Только начинайте работу, когда они находятся в состоянии :pending, и имеют отдельный пакетный процессор, который проверяет :running заданий, которые достигли таймаута. Таким образом, когда рабочие места были убиты до завершения, вы можете перезапустить их.

+0

AHhh Я вижу, это имеет смысл. Можете ли вы также взглянуть на мое дополнение выше моего первоначального вопроса? (Я забыл сказать это раньше) – Tallboy

+0

Вы хотите, чтобы те же самые штаты существовали на ваших повторяющихся работах. Другое дело, когда вы завершаете задание, вы создаете новое задание как ожидающее (или вы можете настроить состояние на ожидании с новым временем начала). Я предпочитаю создавать новую работу, чтобы вы могли видеть историю выполнения заданий. –

+0

Кстати, я использовал этот камень перед https://github.com/pluginaweek/state_machine с sidekiq для создания надежных заданий. Я уверен, что работа с отложенными работами тоже сработала. –