2016-06-28 3 views
0

Я делаю приложение, которое должно выполнять задание с чрезвычайно точными интервалами времени (например, 30 секунд, максимально допустимая задержка составляет + -1 секунду).Запуск задания Rails в точное время (с точностью до второго)

В настоящее время я использую внешнее приложение Go, которое опросает конечную точку API, встроенную в мое приложение.

Есть ли способ, которым я мог бы выполнить задачу на рабочем станке (например, дирижер Heroku) с задержками менее одной секунды?

Я исследовал Sidekiq и delayed_job, но оба имеют значительное отставание и поэтому непригодны для моего приложения.

ответ

2

Запланируйте работу за 60 секунд до того, когда она вам понадобится. Перейдите в точное время, когда вам нужно выполнить задание в качестве параметра. Затем запустите sleep до Time.now == exact_time_down_to_the_second?

+0

Отличная идея. Я думал больше о том, что было встроено в язык, но это звучит великолепно. Я соглашусь на это как на ответ, если ничего лучшего не произойдет, прежде всего потому, что я, вероятно, трачу впустую циклы, время от времени вызываю сон. –

+1

Да, это немного хаки, но я думаю, что большинство запланированных заданий чрезвычайно сложно обеспечить точное выполнение. Мне было бы очень интересно узнать, есть ли у кого-то лучший ответ. –