一个老项目中用的还是ruby 1.8.7, 非常老的版本, 用不到coroutine等比较新的技术, 所以在项目中做一些异步的事情非常困难。当然了, 如果是最新版本的ruby,这些不是问题。ruby 1.8.7环境下要执行异步任务, 有2种方式, 这里只是简单记一下。
1. delayed job, 用的github上的开源项目, https://github.com/tobi/delayed_job 会把代码上下文持久化到数据库里面, 会重试,可以设置最大重试次数。
首先gemfile中添加依赖:gem 'delayed_job'
module LongJobs
require 'ooo/constants'
require 'xxx/handler'
#send group email alert
class GroupAlertJob < Struct.new(:content, :infos, :emails)
include Plusman
def before(job)
puts "#{job.id}============================#{Time.now}"
STDOUT.flush
end
def perform
写一个实现类, perform方法会被调用。任务执行的时候会锁表。
De