Плагину Rails backgroundRB нужно запланировать это и поставить в очередь в базу данных для постоянства - PullRequest
0 голосов
/ 30 октября 2009

Я пытаюсь сделать следующее:

  1. Запускать рабочий и метод внутри него каждые 15 минут
  2. Иметь журнал последнего выполнения задания в таблице базы данных. bdrd_job_queue.

Что я сделал:

У меня есть расписание каждые 15 минут в моем файле backgroundRB.yml

У вызова метода есть вызов persistent_job.finish!, но он не работает, потому что объект persistent_job равен нулю.

Как я могу убедиться, что он вошел в БД, но все же автоматически запланировано с backgroundRB.yml?

1 Ответ

0 голосов
/ 06 ноября 2009

Я наконец смог это сделать.

Обходной путь - запланировать задачу, которая поставит ее в очередь в базе данных, запланированной на немедленное выполнение.

В вашем работнике ...

class NotificationWorker < BackgrounDRb::MetaWorker
  set_worker_name :notification_worker

  def create(args = nil)
  end

  def queue_notify_changes(args = nil)
    BdrbJobQueue.insert_job(:worker_name => 'notification_worker',
                            :worker_method => 'notify_new_changes_DAEMON',
                            :args => 'hello_world',
                            :scheduled_at => Time.now.utc,
                            :job_key => 'email_changes_notification_task')
  end
  def notify_new_changes_DAEMON
     #Do Incredibly cool stuff here
  end

В конфигурационном файле backgroundrb.yml

--- 
:backgroundrb: 
  :ip: 0.0.0.0
  :port: 11006
  :environment: production
  :log: foreground
  :debug_log: true
  :persistent_disabled: false
  :persistent_delay: 10

:schedules:
  :notification_worker:
    :queue_notify_changes:
      :trigger_args: 0 0 0 * * *
...