比如我们登录成功的时候要执行一些 background jobs,那这里可能就会用 resque,那么有个问题就是登录成功后如何得知那些 background jobs 的状态呢? resque-status 这个gem就可以搞定了
先看下面的代码
require 'rubygems'
require 'pry'
require 'resque'
Resque.redis = 'localhost:6379'
Resque.redis.namespace = "resque:vkill.net"
require 'resque/job_with_status'
Resque::Status.expire_in = (24 * 60 * 60)
class SleepJob < Resque::JobWithStatus
def perform
total = options['length'].to_i || 1000
num = 0
while num < total
at(num, total, "At #{num} of #{total}")
sleep(1)
num += 1
end
completed
end
end
job_id = SleepJob.create(:length => 100)
status = Resque::Status.get(job_id)
binding.pry
=begin
[root@vkill-arch ~]# ruby resque-status_demo.rb
From: resque-status_demo.rb @ line 27 in Object#N/A:
22: end
23: end
24:
25: job_id = SleepJob.create(:length => 100)
26: status = Resque::Status.get(job_id)
=> 27: binding.pry
28:
pry(main)> job_id
=> "60c3b710bdba012e7b916c55f9208b32"
pry(main)> Resque::Status.status_ids
=> ["60c3b710bdba012e7b916c55f9208b32",
"61858fb0bdb9012e7b906c55f9208b32",
"3b377730bdb9012e7b8f6c55f9208b32"]
=end
通过上面代码就可以理出思路, 登录成功后 执行 job,并把 job_id 存储在服务器端,然后把 job_id 返回给浏览器,浏览器就可以ajax 循环请求服务器来得知backgroud jobs 的执行情况了
Last modified by vkill on2011/09/10 21:50
先看下面的代码
require 'rubygems'
require 'pry'
require 'resque'
Resque.redis = 'localhost:6379'
Resque.redis.namespace = "resque:vkill.net"
require 'resque/job_with_status'
Resque::Status.expire_in = (24 * 60 * 60)
class SleepJob < Resque::JobWithStatus
def perform
total = options['length'].to_i || 1000
num = 0
while num < total
at(num, total, "At #{num} of #{total}")
sleep(1)
num += 1
end
completed
end
end
job_id = SleepJob.create(:length => 100)
status = Resque::Status.get(job_id)
binding.pry
=begin
[root@vkill-arch ~]# ruby resque-status_demo.rb
From: resque-status_demo.rb @ line 27 in Object#N/A:
22: end
23: end
24:
25: job_id = SleepJob.create(:length => 100)
26: status = Resque::Status.get(job_id)
=> 27: binding.pry
28:
pry(main)> job_id
=> "60c3b710bdba012e7b916c55f9208b32"
pry(main)> Resque::Status.status_ids
=> ["60c3b710bdba012e7b916c55f9208b32",
"61858fb0bdb9012e7b906c55f9208b32",
"3b377730bdb9012e7b8f6c55f9208b32"]
=end
通过上面代码就可以理出思路, 登录成功后 执行 job,并把 job_id 存储在服务器端,然后把 job_id 返回给浏览器,浏览器就可以ajax 循环请求服务器来得知backgroud jobs 的执行情况了
Last modified by vkill on2011/09/10 21:50
网友评论(0):


