/ / Как да актуализирате cron въз основа на datetime в db - ruby-on-rail, ruby, ruby-on-rails-3, cron, планирани задачи

Как да актуализирате cron въз основа на datetime в db - ruby-on-rail, ruby, ruby-on-rail-3, cron, планирани задачи

Добре, така че аз релси прилагане с MySQL база данникойто има поле, наречено end_date в таблицата с поръчки. Това поле се управлява от администратора. Имам нужда от cronjob, който работи 2 седмици преди полето end_date. Всички идеи как да направите това. Аз също използвам всеки път, когато скъпоценен камък

every 1.day, :at => "12:30 am" do
runner "Order.task_that_checks_date"
end

Първата ми мисъл беше да изпълнявам задача cron ежедневно и да проверявам тази стойност, но аз мразя тичане cron всеки ден, ако само трябва да имам cron тичам веднъж годишно. Всички идеи за това как да подобрите това

Отговори:

1 за отговор № 1

Най-плавното решение на този проблем, за което мога да мисля, е да имам дата "next_cron" някъде в приложението и да го актуализирам на after_save кука. Логиката ще бъде да се намери най-скоро end_date в приложението и да се зададе датата "next_cron" до две седмици преди това. Cron или изобщо не работи до тази дата, или толкова често проверява, за да види дали днес е следващия ден и дали ще свърши работа или ще излезе.

Това казано, мисля, че всъщност е повечеефективно да изпълнявате ежедневно вашия cron и просто проверявайте дали има действия, които трябва да предприемете. Това зависи от това колко задачи очаквате да влезете в системата, но като общо правило, бих предпочел да имаш фонов процес, който да отнеме трийсет секунди в три сутринта, отколкото да има операция, насочена към потребителя, да вземе 0.05 допълнителни секунди по време на връх време за трафик.