Skip to content
Background tasks on demand, and cron-like jobs
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
app
examples/app/jobs
lib
public/stylesheets
script
tasks
README
init.rb

README

Плагин для Ruby on Rails 2.3.x

Демон фоновых задач, а также некая замена крона для частых (например пятиминутных) задач, т.к. запуск окружения через rake задачи занимает огромное количество ресурсов.
Все задачи выполняются в отдельных процессах, посредством форка.
Задачи называются job, и лежат в папке /app/jobs/
Есть ограничения на количество одновременно выполняемых джобов.
Также есть защита от одновременного запуска одного джоба.
Очередь задач храниться в Redis
Для блокировки одновременного запуска регулярных задач используется плагин Blocker, он пока ещё сыроват, поэтому выложу чуток по-позже.

Постановка задачи в очередь
client = BgExecutor::Client.new
@job_id, @secure_key = client.queue_job!(:job_name, {:param_1 => 1, :param_2 => 2})


Запросить результат выполнения
client.ask_result(@job_id, @secure_key)


Регулярные задачи описываются в /app/jobs/schedule.rb
class BgExecutor::Schedule < BgExecutor::BaseSchedule
  every 5.minutes do
    regular_job_name1
    regular_job_name2
  end
  
  every 1.minutes do
    regular_job_name3
  end
end


Логи ведутся в 
log/bg_executor_daemon.rb.output
log/bg_executor_job.rb.output
log/bg_executor_regular_job.rb.output

Продолжение мануала следует..

ps: исходники впринципе прозрачно написано, так что ковыряйте, там ещё много чего полезного
Something went wrong with that request. Please try again.