Постоянный демон для запроса веб-ресурса - PullRequest
1 голос
/ 05 июля 2011

У меня есть приложение rails 3 и я искал в интернете демонов, но не нашел подходящего для меня ..

Мне нужен демон, который постоянно извлекает данные (обменивается курсами) с веб-ресурса и сохраняет их в базе данных ..

как:

while true
  Model.update_attribte(:course, http::get.new("asdasd").response)
end

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

Ты понимаешь, о чем я?

Ответы [ 3 ]

2 голосов
/ 22 ноября 2012

gem light-daemon, который я написал, должен работать очень хорошо в вашем случае.

http://rubygems.org/gems/light-daemon

1 голос
/ 05 июля 2011

Наконец, я нашел классное решение для моей проблемы:

Я использую драгоценный камень бога -> http://god.rubyforge.org/

со скриптом bash ( ссылка ) для запуска/ остановка простой задачи рейка (с бесконечным циклом в ней).

Теперь она работает нормально, и у меня даже есть некоторый мониторинг с запущенным богом, который гарантирует, что задача рейка работает нормально.

1 голос
/ 05 июля 2011

Вы можете написать свой код в классе, в котором есть метод execute, использовать систему очередей , например, , и при запуске приложения поставить в очередь задание с Resque.enqueue(Updater).

Очевидно, что работа не закончится, пока приложение не будет остановлено, лично мне это не нравится, но если это требование.

По этой причине, если вам нужно выполнить другие задачи, вы должны настроить более одного рабочего процесса и, возможно, более одной очереди.

Если вы можете отредактировать свои требования и найти триггер для механизма обновления, тот же подход все еще работает, вам нужно только удалить цикл while true

Требуется образец класса:

Class Updater
  @queue = :endless_queue
  def self.perform
    while true
      Model.update_attribute(:course, http::get.new("asdasd").response)
    end
  end
end
...