clockwork+sidekiq做耗时任务
2013年9月28日 10:29
sidekiq是一个基于colluloid的任务队列系统,在使用sidekiq之前,我自己用clockwork和redis构建了一个任务调度和分发系统,其中有一些统计的工作,需要遍历redis中的所有记录。随着记录的不断增长,遍历一次的时间越来越长,影响到clockwork的工作了,于是将这部分耗时的工作丢给sidekiq处理。
将原来的类变成sidekiq的worker,将所有这些类的rb文件在sidekiq_env.rb中require进来。
class HardJob include Sidekiq::Worker def perform opt=:take_snapshot case opt.to_sym when :take_snapshot HardJob.new.take_snapshot when ... end ... end
clockwork的脚本中,require "sidekiq_env.rb"
HardJob.delay.perform_async :take_snapshot
在另一个终端中运行
sidekiq -r ./sidekiq_env.rb
从日志中可以看到sidekiq开始异步执行任务。